python函数全体变量

  • Post category:Python

Python函数中全局变量的使用比较特殊,需要注意一些细节。下面是Python函数全局变量的完整攻略。

1. 定义全局变量

在函数外部定义的变量为全局变量,可以在函数内部和外部使用。

# 定义全局变量
global_var = "global variable"

def print_var():
    # 在函数内部使用全局变量
    print(global_var)

# 调用函数
print_var()

# 在函数外部使用全局变量
print(global_var)

2. 在函数内部修改全局变量

如果要在函数内部修改全局变量,在函数内部需要先声明变量为全局变量,否则Python会将这个变量视为函数内部变量,而不是全局变量。

# 定义全局变量
global_var = 10

def add_var():
    # 声明变量为全局变量
    global global_var
    global_var += 5
    print(global_var)

# 调用函数
add_var()

# 在函数外部输出全局变量
print(global_var)

3. 注意变量作用域

Python函数的作用域为LEGB原则,即首先在函数内部查找变量,如果找不到,则在离函数最近的外层作用域中查找变量,以此类推。如果最终在全局作用域中都找不到变量,则会提示NameError。

x = 10

def func():
    x = 20
    def inner_func():
        print(x)
    inner_func()

func()  # 输出 20

代码中,定义全局变量x,并定义了一个函数func,在函数内部定义了变量x并赋值为20,再定义了一个内部函数inner_func,在内部函数中输出变量x。调用func()函数,可以看到输出结果为20。

这个结果符合LEGB原则,inner_func()函数首先在自己内部查找变量x,找不到,向外层作用域中查找,找到了func()函数中的x变量,并输出了x的值。

总结

Python函数中使用全局变量需要注意声明变量为全局变量,否则Python会将这个变量视为函数内部变量。同时,还需要注意变量作用域,Python中的变量作用域遵循LEGB原则。