在 Python 中,使用 LEGB 规则查找变量。
即: Local -> Enclosed -> Global -> Built-in
其中:
- Local: 在函数或者类内部
- Enclosed: 闭包函数,比如内部函数
- Global: 全局变量
- Built-in: Python 自带变量
如果要在函数内部(Local)修改全局(Global)变量,需要加关键字 global 先声明。
同理,如果在闭包中(Enclosed)修改函数内部(Local)变量,需要加关键字 nonlocal 先声明。
特殊情况:
for-loop 会将循环变量保存在它存在的命名空间中。