python 跨函数变量

  • Post category:Python

Python中,跨函数变量通常指的是在不同函数中共享同一个变量。要实现跨函数变量,可以使用全局变量或者闭包。

使用全局变量

一种实现跨函数变量的方式是使用全局变量。在Python中,可以在任意位置定义全局变量,并在函数中使用。但是要注意,在函数内修改全局变量需要使用 global 关键字,否则会被认为是函数内部的局部变量。

代码示例:

# 定义全局变量
count = 0

def add():
    # 声明使用全局变量
    global count
    # 修改全局变量
    count += 1
    print(count)

def sub():
    # 声明使用全局变量
    global count
    # 修改全局变量
    count -= 1
    print(count)

add() # 输出 1
sub() # 输出 0

上述代码中,全局变量 count 被使用在 add()sub() 函数中,通过使用 global 关键字声明使用全局变量来实现在不同函数中共享变量的目的。

使用闭包

另一种实现跨函数变量的方式是使用闭包。闭包是指定义在函数内部的函数,并且可以访问到外部函数的变量。闭包可以实现一种类似于封装的效果,用于隐藏变量和函数。

代码示例:

def counter():
    count = 0
    def add():
        # 闭包中访问外部函数的变量
        nonlocal count
        count += 1
        print(count)
    def sub():
        # 闭包中访问外部函数的变量
        nonlocal count
        count -= 1
        print(count)
    # 返回内部函数引用
    return add, sub

# 获取内部函数的引用
add, sub = counter()
add() # 输出 1
sub() # 输出 0

上述代码中,定义了一个外部函数 counter(),内部包括 count 变量和两个内部函数 add()sub()add()sub() 作为两个闭包,分别返回内部函数的引用。在外部函数中定义变量,内部函数中可以访问该变量,从而实现了跨函数变量的目的。