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原则。