Python基础-作用域
作用域
1 概念
- python 是静态作用域,即变量的作用域源于它在代码中的位置,在不同的位置,可能有不同的命名空间
2 python-LEGB
- L - Local:函数内的命名空间。
作用范围:当前整个函数体范围
- E - Enclosing function locals:外部嵌套函数的命名空间
作用范围:闭包函数
- G - Global:全局命名空间
作用范围:当前模块(文件)
- B - Builtin:内建模块命名空间。
作用范围:所有模块(文件)
LEGB 规则:L > E > G > B 顺序进行查找
3 注意
- python 中没有块级作用域
- 块级作用域,即在代码块中,比如 if while for 后的代码块
if True:
a = 10
print(a) # 外面可以访问 a 变量
4 基于命名空间的常见变量类型
* 在一个函数内部定义的变量
* 作用域为函数内部
* 查看局部变量,locals()
* 在函数外部,文件最外层定义的变量
* 作用域为整个文件内部
* 查看全局变量,globals()
nonlocal a :只能用于闭包函数内修改外层函数变量a
global a :只用于修改全局变量 a,即函数内修改函数外变量 a
1. 访问原则
* 从内到外
2. 结构规范
* 将全局变量统一放在文件头部
* 然后是函数定义
* 最后是逻辑代码
3. 全局变量和局部变量重名
* 获取:就近原则
* 修改:global 全局变量,进行声明
4. 命名
* 全局变量一般是 g_a 等
网友评论