代码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/