Peteryo01223 发表于 2020-1-13 15:40:07

《第016课:序列》答案中的一个问题

本帖最后由 Peteryo01223 于 2020-1-13 15:42 编辑

小甲鱼的《第016课:序列》,课后作业中一道题:

题目:猜想一下 min() 这个BIF的实现过程

答案:

def min(x):
    least = x

    for each in x:
      if each < least:
            least = each

    return least

print(min('123456789'))

请问:为何答案的code中,从来没有定义 x,但Python知道 x 就是下面的字符串“123456789”呢?是一个给 x 的默认设置吗?

jackz007 发表于 2020-1-13 15:43:29

本帖最后由 jackz007 于 2020-1-13 15:47 编辑

def min(x):
      这一句定义了 x 是函数 min() 的输入参数,其性质是一个局部变量。Python 通过调用函数时所使用的实参类型来确定形参的变量类型。在本例中,x = '123456789' 显然是一个字符串。

Peteryo01223 发表于 2020-1-13 15:47:46

jackz007 发表于 2020-1-13 15:43
这一句定义了 x 是函数 min() 的输入参数,其性质是一个局部变量。Python 通过调用函数 min() 时 ...

好的。另外,return least,这句做什么用的呢?怎么保证程序不无限循环下去呢?

jackz007 发表于 2020-1-13 15:56:50

Peteryo01223 发表于 2020-1-13 15:47
好的。另外,return least,这句做什么用的呢?怎么保证程序不无限循环下去呢?

    return least
      return 语句有 2 个作用,其一是终止函数执行,返回函数调用处;其二是把函数的运算结果反馈给调用者。在本例中,least 是从输入参数 x 所代表的可迭代对象中,找到的数值最小的那个元素。
       避免死循环的方法就是要通过循环变量来设置循环条件,在循环过程中,通过调整循环变量使循环过程逐渐向结束方向靠近并直至结束。

wp231957 发表于 2020-1-13 15:58:38

Peteryo01223 发表于 2020-1-13 15:47
好的。另外,return least,这句做什么用的呢?怎么保证程序不无限循环下去呢?

foreachinx这个循环就是枚举一个序列
序列结束,循环结束,不会无限下去

Peteryo01223 发表于 2020-1-13 15:58:54

jackz007 发表于 2020-1-13 15:56
return 语句有 2 个作用,其一是终止函数执行,返回函数调用处;其二是把函数的运算结果反馈 ...

好的

Peteryo01223 发表于 2020-1-13 16:14:05

wp231957 发表于 2020-1-13 15:58
foreachinx这个循环就是枚举一个序列
序列结束,循环结束,不会无限下去

好 理解~

田埂 发表于 2020-3-6 18:32:50

大佬们,我有个问题,这个代码的   least = x,这句代表什么呢
页: [1]
查看完整版本: 《第016课:序列》答案中的一个问题