Python作用域

LEGB 规则

Python 使用 LEGB 的顺序来查找一个符号对应的对象

locals -> enclosing function -> globals -> builtins
  • locals,当前所在命名空间(如函数、模块),函数的参数也属于命名空间内的变量
  • enclosing,外部嵌套函数的命名空间(闭包中常见)
    def fun1():
      a = 10
      def fun2():
          print(a)
    
  • globals,全局变量,函数定义所在模块的命名空间
    a = 1
    def fun():
      # 需要通过 global 指令来声明全局变量
      global a
      # 修改全局变量,而不是创建一个新的 local 变量
      a = 2
    
  • builtins,内建模块的命名空间。

      Python 在启动的时候会自动为我们载入很多内建的函数、类,
      比如 dict,list,type,print,这些都位于 __builtin__ 模块中,
      可以使用 dir(__builtin__) 来查看。
 
posted @ 2019-06-12 17:02  一人在山旁  阅读(141)  评论(0)    收藏  举报
Live2D