为什么此代码中需要"total = 0"行?
def sum_to(n):
total = 0 # <<< this line
for i in range(n):
total= total + i
return total
此外,我注意到"while"循环也是如此,只是想知道该语句是否表示起始数字(即 0),或者只是作为将外变量引入内置函数的一种方式。
谢谢!
基本答案
Python 要求您定义在对它进行操作时要使用的变量。
例如
total+1
#error
NameError: name 'total' is not defined
total = int()
total+1
#output
1
它在循环修改变量之前将变量初始化为起始值。考虑没有它的替代方案:
def sum_to(n):
for i in range(n):
total = total + i
return total
在循环的第一次迭代中,它被要求执行total + i
,但它以前从未遇到过total
,因此没有可能用于它的价值。
如果您运行该修改后的函数,则会出现错误
UnboundLocalError: local variable 'total' referenced before assignment
告诉您正在尝试访问从未被赋值的变量。在这种情况下,Python可以看到你最终会给它一个值,因此"在赋值之前"。在不正确的不同上下文中,错误可能是
NameError: name 'total' is not defined
这意味着变量是完全未知的。
您是正确的,语句total=0
表示total
的起始值。
如果不初始化total=0
或其他此类语句,计算机将不知道total
的起始值应该是多少。
换句话说,如果不初始化total=some_value_that_you_choose
,计算机将无法"了解"total
的起始值来理解您的代码。