• python 命令空间


    1、命名空间

      Python使用命名空间来记录变量的轨迹。命名空间是一个 字典(dictionary) ,它的就是变量名,它的就是那些变量的值。命名空间的知识和作用域是类似的。其实就是全局变量和局部变量的问题。

    2、命名空间查找顺序

      当一行代码要使用变量 x 的值时,Python 会到所有可用的名字空间去查找变量,按照是顺序LEGB:

      L:局部的(local)

        特指当前函数或类的方法。如果函数定义了一个局部变量 x,或一个参数 x,Python 将使用它,然后停止搜索。

      E:封闭的(Enclosing)

        在函数体内定义了一个新的函数

      G:全局的(Global)

        特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python 将使用它然后停止搜索。

      B:内置的(Built-in)

        对每个模块都是全局的。作为最后的尝试,Python 将假设 x 是内置函数或变量。


      如果 Python 在这些名字空间都找不到 x,它将放弃查找并引发一个 NameError 异常,如,NameError: name ' x' is not defined。

    内置函数 locals(),globals() 是帮助我们查看当前行代码的命令空间。

    1 g = 11
    2 def func(a=2):
    3     b=3
    4     print (locals())
    5     print (globals())
    6 func()

    locals()和globals()有一个区别是,locals只读,globals可以写。

  • 相关阅读:
    NOIP201310华容道
    NOIP201110观光公交
    markdown
    【NOIP2016】愤怒的小鸟
    【NOIP2016】组合数问题
    [TJOI2019]唱,跳,rap,篮球(生成函数,组合数学,NTT)
    CF1217E Sum Queries? (线段树)
    CF1178F Short/Long Colorful Strip(DP)
    ZROI 暑期高端峰会2019 总结
    [HNOI2012]集合选数(构造,状态压缩,DP)
  • 原文地址:https://www.cnblogs.com/qikang/p/8627933.html
Copyright © 2020-2023  润新知