代码1:

# coding:utf-8

sum = 5

def add(x, y):
    print sum
    sum = x + y

if __name__ == '__main__':
    add(7, 8)

当我运行上面的代码时,出现以下错误:
ssspure:python ssspure$ python test.py
Traceback (most recent call last):
  File "test.py", line 11, in <module>
    add(7, 8)
  File "test.py", line 6, in add
    print sum
UnboundLocalError: local variable 'sum' referenced before assignment

代码2:

# coding:utf-8

sum = 5

def add(x, y):
    sum = x + y
    print sum

if __name__ == '__main__':
    add(7, 8)

我可以成功运行code2。

我只将 print sum 移到“sum = x + y”语句下方。为什么 Code1 失败,而 Code2 运行成功?

最佳答案

对于代码 1:

你没有申报金额。您在 add 函数之外定义的 sum 对 add 函数中的 sum 没有影响。

您可以将 sum=0 放在您的函数中,这将起作用。

事实上,你是在你的 code2 中这样做的。您将 sum 初始化为 x+y

关于python - UnboundLocalError : local variable 'sum' referenced before assignment,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36659554/

10-16 16:18