0
我不知道为什么我看到的UnboundLocalError
:如果可以从局部范围读取globlal variabales,那么为什么不能打印全局变量?
def spam():
print(eggs)
eggs = 'spam local'
eggs = 'global'
spam()
任何人都可以解释,为什么?
我不知道为什么我看到的UnboundLocalError
:如果可以从局部范围读取globlal variabales,那么为什么不能打印全局变量?
def spam():
print(eggs)
eggs = 'spam local'
eggs = 'global'
spam()
任何人都可以解释,为什么?
事实上,您将eggs
重新绑定到本地范围eggs = 'spam local'
是触发此事件的原因。
的Python认为eggs
会在局部范围内由于该转让,当它调用print
期间看起来eggs
涨它就会抱怨说,它正试图执行后(前行分配引用变量(eggs
)印刷品)。
一般来说,我还没有看到任何需要你想要做的事情,无论哪种方式,你都可以通过使用global
来向Python表明你将要改变一个名字全球范围内:
def spam():
global eggs
print(eggs)
eggs = 'spam local'
,或者传递值作为参数,这不会改变全局值,但使其可在本地补救参考失败的第一个打印通话过程中发现:
def spam(eggs=eggs):
print(eggs)
eggs = 'spam local'
这两种方法有不同的s emantics当然:
eggs
在本地范围内可用,并将其用作参数,其全局值为eggs
作为其默认值。 eggs
在print
中的查找现在可用,而eggs = 'spam local'
将改变位于本地范围中的eggs
。您可以根据您尝试尝试的内容来选择。