本文最后更新于 258 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
变量作用域
函数外部定义的变量可以在函数里面使用、修改和重新赋值,这涉及到Python中变量作用域的问题。
变量作用域(Variable Scope)是指变量的有效生存空间。
在函数中,Python会按照以下顺序,在各个作用域的命名空间中寻找变量:
- 函数局部作用域(Local Function Scope)。
- 闭包作用域(Enclosing Scope)。
- 全局作用域(Global Scope)。
- 内置作用域(Built-in Scope)。
如果有重名的变量,局部优先于闭包,闭包优先于全局,全局优先于内置。
局部作用域
例如,所有变量在局部作用域的例子:
def foo(a, b):
c = 1
return a + b + c
全局作用域
c在全局作用域:
c = 1
def foo(a, b):
return a + b + c
内置作用域
内置函数都在内置作用域,它们都可以在标准库模块builtins中找到:
import builtins
len is builtins.len
True
闭包作用域
嵌套函数中,a相对于inner()函数来说,是一个属于闭包作用域的变量:
def outer():
a = 1
def inner():
print(f"{a=}")
inner()
outer()
a=1