Python 作用域
变量的作用域是指变量的作用范围,是程序可以访问该变量的正文区域。例如:
g = def function():print(g)print(g)
程序总共有 6 行
在第 1 行,定义了变量 g
在第 4 行,在函数 function 内部访问变量 g
在第 6 行,在全局范围访问变量 g
因为可以在程序的任意位置(从第 1 行到第 6行)访问到该变量,变量 g 的作用域就是从第 1 行到第 6行的正文区域。
1. 四种作用域
1.1 概述
在 Python 中,存在 4 种类型的作用域:
1.2 Builtin 作用域
Builtin 作用域是能够访问内置函数和内置变量的正文区域。示例说明 Builtin 作用域:
def function():print(max(, ))print(max(, ))
1.3 Global 作用域
Global 作用域是能够访问全局变量的正文区域。示例说明 Global 作用域:
global_var = def function():print(global_var)print(global_var)
global_var 的作用域是从第 1 行到第 6 行的文本区域
1.4 Local 作用域
Local 作用域是能够访问函数参数和局部变量的正文区域。示例说明 Local 作用域:
def function():local_var = print(local_var)print(local_var)
local_var 是函数 function 的局部变量
在第 5 行,在函数 function 外访问变量
只能在函数内部访问局部变量
运行时会产生异常 NameError
local_var 的作用域是从第 2 行到第 3 行的文本区域
1.5 Enclosing 作用域
假设函数是嵌套定义的,Enclosing 作用域是能够访问外部函数的参数和局部变量的正文区域。示例说明 Local 作用域:
def outter():outter_var = def inner():inner_var = print(outter_var)outter()