我们什么时候需要在循环中定义变量?



为什么此代码中需要"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的起始值来理解您的代码。

最新更新