全局变量和局部变量
- 定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
- 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。
# 全局变量
total = 24
def f(x, y):
# 局部变量
total = x + y
print("函数内:", total)
return total
f(1, 1)
print("函数外:", total)
输出:
函数内: 2
函数外: 24
global
和 nonlocal
关键字
当内部作用域想修改外部作用域的变量时,可以使用 global
关键字。示例如下:
total = 24
def f(x, y):
# 使用global声明一个全局变量
global total
total = x + y
print("函数内:", total)
return total
f(1, 1)
print("函数外:", total)
输出:
函数内: 2
函数外: 2
如果要修改嵌套作用域(外层非全局作用域)中的变量则需要 nonlocal
关键字。示例如下:
def outer():
num = 24
def inner():
# nonlocal用于外部嵌套变量的调用
nonlocal num
num = 8
print(num)
inner()
print(num)
outer()
输出:
8
8