global
代码
# global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字。
gcount = 0
def global_test():
print(gcount)
def global_counter():
global gcount
gcount += 1
return gcount
gc = global_counter
def global_counter_test():
print(gc(),gc(),gc())
global_counter_test()
输出
1 2 3
nonlocal
代码
# nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
def make_counter_test():
mc = make_counter()
print(mc(),mc(),mc())
make_counter_test()
def tester(statrt):
state = statrt
def nestrd(lable): # 工厂函数
nonlocal state
lable += 1
return lable, state
return nestrd
f = tester('zhou')
print(f(2))
print(f(3))
print(f(4))
输出
1 2 3
(3, 'zhou')
(4, 'zhou')
(5, 'zhou')