我不知道为什么我看到UnboundLocalError
:
def spam():
print(eggs)
eggs = 'spam local'
eggs = 'global'
spam()
谁能解释为什么?
您将eggs
重新固定到本地范围的事实是触发的。
python认为eggs
将由于该分配而在本地范围中,当它在致电print
期间看起来eggs
时,它将抱怨它正在执行作业之前引用变量(eggs
)打印)。
通常,我还没有看到任何需要您要做的事情的东西,无论哪种方式,您都可以通过使用global
来使其工作起来范围:
def spam():
global eggs
print(eggs)
eggs = 'spam local'
或将值作为参数传递,这不会在全球上改变该值,而是可以在本地使用该值,以补救在第一个打印呼叫期间找不到的参考文献:
def spam(eggs=eggs):
print(eggs)
eggs = 'spam local'
这两种方法当然具有不同的语义:
- 第一个本质上是一个提示,告诉Python您将参考/更改全局范围中的变量,因此它知道 如何加载/存储它。
- 第二个使
eggs
通过将其用作参数可用,将eggs
的全局值连接为默认值。print
中的eggs
查找现在可以使用eggs = 'spam local'
,而CC_13将更改位于本地范围的eggs
。
您可以根据试图尝试的内容选择。