Python局部变量和全局变量搜索

时间:2018-05-16 09:28:43

标签: python namespaces global local

这是我的代码:

abc=0  
def a():     
    abc+=1  
    print abc 

当我执行此功能时:

a() 

我收到此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in abc
UnboundLocalError: local variable 'abc' referenced before assignment

我可以通过在函数中添加global abc来解决这个问题,但我的问题是为什么python解释器无法决定某些东西是否在本地空间中,然后搜索全局并从那里分配值。

它是用于在本地空间中打印全局变量而不是用于分配?

1 个答案:

答案 0 :(得分:1)

编辑1:更新了错误的变量名称和注释的代码。

编辑2:添加了示例增量代码。

即使您指定为全局变量,也必须在函数中指定“abc”变量。

# if assign global abc
global abc

def a(): 
    # must assign variable "abc" 
    abc = 0     
    abc += 1  
    print abc

 a()
 # print 1

增加示例代码。

abc = 0

def a():
    global abc
    abc = abc + 1

a()
# every times call a() plus 1 to abc.

print abc
# print 1