python - 为什么变量名 "sum"导致错误 [Python]

标签 python variables

您好,我为 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/

相关文章:

python - 删除列 pandas 中的子字符串

javascript - EaselJS键盘输入问题

javascript - 使用 javascript 在 url 中添加/修改查询字符串/GET 变量

python - 如何在html中使用正则表达式或其他方式在python中删除<p>标签下的属性?

python - 带有双刻度鼠标的 Matplotlib

Python:将长文本拆分为字符串 block ,给定字符限制

javascript - 在页面之间移动时创建变量和 'storing it',jquery

php - 如何在 "properly"中处理 $_GET 变量?

Javascript 无法给变量赋值并导致中断 --> word5 = (keywords[n].length);

python - 合并具有不同索引的 3 个数据帧