一、局部作用域
指某个函数内部的范围。每次执行函数时都会创建的新命名空间,同一函数不同时间运行其作用域相互独立,不同函数内部可以使用同一变量名。局部作用域内声明的变量名在函数外也可以使用,程序运行过程中两者互不干扰。
def func():
a = 0 # 局部变量
print("func a = ", a)
a = 'Hello Python' # a为全局变量
func()
print("函数外 a : ", a)
输出结果:
func a = 0
函数外 a : Hello Python
二、全局作用域
全局作用域范围指的是在一个py文件内部,在模块顶部声明的即成为全局作用域。全局作用域中的变量在函数中一般是不可更改的,例如整数,字符等,但对于列表和字典来说可以更改。如想引用并改变全局变量,可使用global关键字。
a = 1 # a为全局变量
def func():
a = 2 # 局部变量
a += 1
print("局部变量 a = ",a)
func()
print("全局变量 a = ",a)
输出结果:
局部变量 a = 3
全局变量 a = 1
三、global关键字
如果您需要创建一个全局变量,但被卡在本地作用域内,则可以使用 global 关键字。
global 关键字使变量成为全局变量。
a = 1
def func():
global a # 在使用a之前用global
a += 1
func()
print("函数外 a = ", a)
输出结果:
函数外 a = 2
四、nonlocal关键字
对于嵌套函数中的内层函数而言,,通过nonlocal可以使用外层函数而global不可以
a = 3
def func():
a=2
def inner():
nonlocal a
a = 1
inner()
print("函数中 a = ", a)
func()
输出结果:
函数中 a = 1