Python中的全局和局部变量
问题内容:
我正在学习Python。一本关于Python 3的书说以下代码应该可以正常工作:
def funky():
print(myvar)
myvar = 20
print(myvar)
myvar = 10
funky()
但是当我在Python 3.3中运行它时,我得到了
UnboundLocalError: local variable 'myvar' referenced before assignment
错误。我的理解是,首先print(myvar)
在funky
应该是10,因为它是一个全局变量。第二个print(myvar)
应该是20,因为本地myvar
定义为20。这是怎么回事?请帮助澄清。
问题答案:
您需要global
在分配值之前调用函数。
def funky():
global myvar
print(myvar)
myvar = 20
print(myvar)
myvar = 10
funky()
请注意,您可以在不调用global的情况下打印值,因为无需使用即可访问全局变量global
,但是尝试分配值将需要它。