zoukankan      html  css  js  c++  java
  • 命名空间与作用域

    命名空间加载顺序

    • python解释器启动加载:内置命名空间
    • 执行.py文件加载:全局命名空间
    • 调用函数产生:局部命名空间
    名字查找顺序:
    •  LEGB法则:locals -> enclosing function -> globals -> builtins
    • 局部命名空间 --->闭包函数命名空间 ---> 全局命名空间 ---> 内置命名空间
    globals() #返回全局作用域中 变量:值 组成的字典
    locals() #返回局部作用域中 变量:值 组成的字典
     
    例子:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    a_global = 1
     
     
    def func(pram1):
        "普通函数"
        a_local = 2
        print(globals())
        print(locals())
     
    def encFunc(parm2):
        "闭包函数"
        out_local = 3
        print('outer:'globals())
        print('outer:'locals())
        def innerFunc(parm3):
            in_local = 4
            print('inner:',globals())
            print('inner:'locals())
        return innerFunc
     
    func(3)
    encFunc(3)
    encFunc(3)(1)
    '''输出:
    {...省略...,'a_global': 1, 'func': <function func at 0x0000017B61A52E18>, 'encFunc': <function encFunc at 0x0000017B63735378>}
    {'a_local': 2, 'pram1': 3}
    outer: {...省略...,'a_global': 1, 'func': <function func at 0x0000015BDAFC2E18>, 'encFunc': <function encFunc at 0x0000015BDB195378>}
    outer: {...省略...,'out_local': 3, 'parm2': 3}
    inner: {...省略...,'a_global': 1, 'func': <function func at 0x00000145A9492E18>, 'encFunc': <function encFunc at 0x00000145AB185378>}
    inner: {'in_local': 4, 'parm3': 1}
    '''
  • 相关阅读:
    新入住CNBLOG
    C#简易外挂制作
    Cnblogs自定义皮肤css样式简易设定
    ACFUNProject{网页通用筛选抓取器+C#初学者简易教程}
    Java Collectors API实践
    下单延迟10s撤单性能测试
    Go WebSocket开发与测试实践【gorilla/websocket】
    复杂JSON结构创建语法
    单元测试再出发
    动态模型之动态增减【FunTester测试框架】
  • 原文地址:https://www.cnblogs.com/rons/p/9064844.html
Copyright © 2011-2022 走看看