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}
    '''
  • 相关阅读:
    C#代码控制tfs
    WindowService 执行命令
    自定义服务端Script控件支持javascript服务端路径?
    asp.net 实现LRC歌词播放
    asp.net ajax使用方法一
    左右两列布局
    XML反序列化一例
    自定义配置节备忘
    使用WTSGetActiveConsoleSessionId()的VISTA服务与桌面交互
    Java web 学习
  • 原文地址:https://www.cnblogs.com/rons/p/9064844.html
Copyright © 2011-2022 走看看