Python 变量作用域详解
更新时间:2023-07-14什么是变量作用域?
在 Python 中,每个变量都有一个作用域,作用域指的是变量生效的范围。Python 中有两种类型的作用域,即全局作用域和局部作用域。
全局作用域
全局变量是在函数外定义的变量,可以在程序的任何地方进行访问。全局变量的作用域是整个程序,包括各个函数中。
x = 10 # 全局变量 def example(): print(x) # 可以在函数内访问全局变量 print(x) # 输出:10 example() # 输出:10
局部作用域
局部变量是在函数内部定义的变量,只在函数内部生效。当函数执行结束后,局部变量也随之销毁。
def example(): y = 5 # 局部变量 print(y) example() # 输出:5 # 在函数外部访问局部变量会报错 print(y) # 报错:NameError: name 'y' is not defined
global 关键字
当需要在函数内部修改全局变量时,需要使用 global 关键字。
x = 10 # 全局变量 def example(): global x # 声明 x 为全局变量 x = 5 # 修改全局变量 x print(x) print(x) # 输出:10 example() # 输出:5 print(x) # 输出:5
nonlocal 关键字
当需要在函数内部修改嵌套函数的变量时,需要使用 nonlocal 关键字。
def outer(): x = 10 # 外部变量 def inner(): nonlocal x # 声明 x 为外部变量 x = 5 # 修改外部变量 x print(x) inner() print(x) outer() # 输出:5 5