python变量作用域

修改同事代码发现变量作用域(scope)的问题,这里了解下。

Python的作用域一共有4中,分别是:

  1. L (Local) 局部作用域
  2. E (Enclosing) 闭包函数外的函数中
  3. G (Global) 全局作用域
  4. B (Built-in) 内建作用域

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

注意:def/class/lambda 外,if/elif/else/ try/except for/while并不能改变其作用域。定义在他们之内的变量,外部还是可以访问

参考

comments powered by Disqus