一、global
global关键字用来在函数或其他局部作用域中使用全局变量
1.1 如果局部要对全局变量修改,而不使用global关键字
count = 0 def global_test(): count += 1 print(count) global_test()
会出现如下错误:
UnboundLocalError: local variable 'count' referenced before assignment
1.2 如果局部要对全局变量修改,应在局部声明该全局变量
count=0
def globaltest1(): global count count+=1 print("globaltest1 "+str(count)) globaltest1() print("count "+str(count))
以上输出为:
globaltest1 1
count 1
1.3 对于函数传值
count=0 def globaltest(count): count+=1 print("globaltest "+str(count)) globaltest(count) print("count "+str(count))
以上输出为:
globaltest 1
count 0
二、nonlocal
nonlocal声明的变量不是局部变量,也不是全局变量,而是外部潜逃函数内的变量
def nonlocaltest(): count=0 def test(): nonlocal count count+=1 print("nonlocaltest " + str(count)) test() print("count "+str(count)) nonlocaltest()
以上输出为:
nonlocaltest 1
count 1