Python 中变量的访问权限取决于其赋值的位置,这个位置被称为变量的作用域。Python 的作用域共有四种,分别是:局部作用域(Local,简写为 L)、作用于闭包函数外的函数中的作用域(Enclosing,简写为 E)、全局作用域(Global,简写为 G)和内置作用域(即内置函数所在模块的范围,Built-in,简写为 B)。
变量在作用域中查找的顺序是 L→E→G→B,即当在局部找不到时会去局部外的局部找(例如闭包),再找不到会在全局范围内找,最后去内置函数所在模块的范围中找。
分别在 L、E、G 范围内定义的变量的例子如下:
global_var = 0 #全局作用域
def outer():
enclosing_var = 1 #闭包函数外的函数中
def inner():
local_var = 2 #局部作用域
内置作用域则是通过 builtins 模块实现的,可以使用以下代码查看当前 Python 版本的预定义变量:
import builtins
dir(builtins)
上述代码的运行结果如下所示:
import builtins
dir(builtins)
[‘ArithmeticError’, ‘AssertionError’, ‘AttributeError’, ‘BaseException’, ‘BlockingIOError’, ‘BrokenPipeError’, ‘BufferError’, ‘BytesWarning’, ‘ChildProcessError’, ‘Connect