在 Python 中,使用 LEGB 规则查找变量。 即: Local -> Enclosed -> Global -> Built-in

其中:

  • Local: 在函数或者类内部
  • Enclosed: 闭包函数,比如内部函数
  • Global: 全局变量
  • Built-in: Python 自带变量

如果要在函数内部(Local)修改全局(Global)变量,需要加关键字 global 先声明。 同理,如果在闭包中(Enclosed)修改函数内部(Local)变量,需要加关键字 nonlocal 先声明。

特殊情况: for-loop 会将循环变量保存在它存在的命名空间中。