Python 是一种动态类型的脚本语言,变量可以在程序中任何地方使用和修改。Python 变量作用域分为两种:全局变量和局部变量。
全局变量
全局变量在函数外部定义,可以被所有函数访问。但是,在函数内部如果想修改全局变量的值,需要使用global
关键字。
num = 10 def change_num(): global num num = 20 print(num) # Output: 10 change_num() print(num) # Output: 20
局部变量
局部变量是在函数内部定义的变量,只能在函数内部访问。函数执行结束后,局部变量会被销毁。
def greeting(): message = "Hello, world!" print(message) greeting() # Output: Hello, world! print(message) # NameError: name 'message' is not defined
非局部变量
非局部变量指的是在嵌套函数中使用的变量,不是全局变量,也不是局部变量。如果想在嵌套函数中访问外部函数中定义的变量,需要使用nonlocal
关键字。
def outer(): num = 10 def inner(): nonlocal num num = 20 inner() print(num) # Output: 20 outer()
需要注意的是,Python 的变量作用域与其他语言不同,不需要使用声明变量的关键字,只需要给变量赋值即可。另外,在函数内部如果访问未定义的变量,会抛出NameError
异常。