您好,我为 Leetcode question 编写了以下代码
class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
while(1):
if num in list( range(0,10) ):
return num
sum = sum( int(i) for i in str(num) )
num = sum
它产生了一个错误第 11 行:UnboundLocalError:赋值前引用的局部变量“sum”
。它已通过将变量 sum
更改为 sum1
来修复。
sum
不在 list of illegal variable names (keywords) 中(第 2.3 节)。
那么为什么会出错呢?是不是当 python 看到 sum = sum(...)
时,python 开始将 sum
视为变量而忘记它是一个函数?
最佳答案
您绝对可以将变量称为“sum”、“file”和“reduce”。如果你在全局范围内这样做,它就会真正起作用。例如:
In [6]: sum = sum(range(1,10))
总和将等于 45,一切都很好。 (尽管事实上您不能再使用函数 sum。)
但是当你试图在函数内部使用 this 时:解释器为函数内部定义的变量定义了它自己的范围。
In [2]: def f():
print type(sum)
sum = sum(range(1,10))
f()
您可能期望答案是“builtin_function_or_method”,但实际上您会得到与上述相同的错误。 希望有人能更好地解释python解释器的细节。
关于python - 为什么变量名 "sum"导致错误 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32284455/