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}
    '''
  • 相关阅读:
    Rotation Kinematics
    离职 mark
    PnP 问题方程怎么列?
    DSO windowed optimization 代码 (4)
    Adjoint of SE(3)
    IMU 预积分推导
    DSO windowed optimization 代码 (3)
    DSO windowed optimization 代码 (2)
    OKVIS 代码框架
    DSO windowed optimization 代码 (1)
  • 原文地址:https://www.cnblogs.com/rons/p/9064844.html
Copyright © 2011-2022 走看看