Python 在不同函数之间共享变量,需要使用全局变量或闭包进行操作。
使用全局变量
使用全局变量的方式,将变量声明在函数外部,然后在函数内部使用 global
关键字声明该变量是全局变量,才能进行读写操作。
count = 0
def add():
global count
count += 1
add()
print(count) # 输出 1
需要注意的是,全局变量在多线程或进程的情况下可能会造成数据竞争,需要使用线程锁或进程管道进行保护。
使用闭包
使用闭包的方式,将变量定义在外部函数中,内部函数中对变量进行操作,并返回内部函数的引用。
def counter():
count = 0
def add():
nonlocal count
count += 1
return count
return add
add = counter()
print(add()) # 输出 1
print(add()) # 输出 2
闭包可以避免全局变量带来的问题,同时将状态封装在函数内部,减少了全局变量带来的影响,使得代码更加优雅和可靠。在 Python 中使用闭包的方式更加普遍。