【发布时间】:2020-08-16 22:29:59
【问题描述】:
num = 0
def func():
print(num)
func()
上面的函数应该打印变量 num 保存的值,它可以工作。这样,我会假设func 可以访问num。但是当我尝试在函数内更改 num 的值时,它给了我一个错误。 UnboundLocalError: local variable 'num' referenced before assignment
num = 0
def func():
print(num)
num += 1
func()
为什么会这样?
【问题讨论】:
-
这是预期行为,请参阅stackoverflow.com/questions/370357/…
-
在函数内部使用
global num -
但这让我很好奇,如果我可以打印,为什么我不能添加一些东西呢?
-
Python 编译器在函数体中看到
num = ...,并假定num是一个局部变量。当它没有看到num = ...时,它假定它是一个全局的