繁体   English   中英

Python本地和全局变量

[英]Python Local and Global Variables

def spam():
    print(eggs)
    eggs = 13

eggs = 12
spam()

这给出了错误:

UnboundLocalError: local variable 'eggs' referenced before assignment

但这不是:

def spam():
    print(eggs)


eggs = 12
spam()

为什么?

在第一个例子中,当你做eggs = 13 ,函数试图在它的范围内找到定义,假设它是一个局部变量,并且因为在函数中没有定义这样的变量,所以local variable 'eggs' referenced before assignment. 抛出异常。

在第二个例子中,由于没有这样的赋值,所以从全局范围中取出eggs ,即eggs=12 ,因此这里不会抛出这样的异常

要解决此问题,您需要在函数内分配局部变量eggs 这里只引用和更改局部变量eggs ,全局变量eggs是相同的。

In [40]: def spam(): 
    ...:     eggs = 12 
    ...:     print(eggs) 
    ...:     eggs = 13 
    ...:     print(eggs) 
    ...:  
    ...: eggs = 12 
    ...: spam() 
    ...: print(eggs)                                                                                                                                                                
12
13
12

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM