python 跨函数变量

  • Post category:Python

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 中使用闭包的方式更加普遍。