码迷,mamicode.com
首页 > 其他好文 > 详细

名称空间

时间:2018-09-06 12:41:37      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:空间   name   作用   osi   作用域   int   命名   ace   多少   

名称空间

又名name space,名称空间就是存放变量名与变量值绑定关系的地方

名称空间共3种,分别如下

  • locals: 是函数内的名称空间,包括局部变量和形参(locals打印当前所在名称空间里的所有局部变量)
  • globals: 全局变量,函数定义所在模块的名字空间(globals打印脚本所有变量)
  • builtins: 内置模块的名字空间

不同变量的作用域不同就是由这个变量所在的命名空间决定的。

作用域即范围

  • 全局范围:全局存活,全局有效
  • 局部范围:临时存活,局部有效

查看作用域方法 globals(),locals()

有了名称空间,才有了作用域

作用域(scope)查找顺序

level = ‘L0‘
n = 22

def func():
    level = ‘L1‘
    n = 33
    print(locals())   # level = L1, n = 33

    def outer():
        n = 44
        level = ‘L2‘
        print(locals(),n) # level = ‘L2‘ , n = 44

        def inner():
            level = ‘L3‘
            print(locals(),n) #此外打印的n是多少?44
        inner()
    outer()

func()

  输出:

{‘level‘: ‘L1‘, ‘n‘: 33}
{‘level‘: ‘L2‘, ‘n‘: 44} 44
{‘level‘: ‘L3‘, ‘n‘: 44} 44

问题:在inner()里的打印的n的值是多少?44

LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> __builtins__

    • locals 是函数内的名字空间,包括局部变量和形参
    • enclosing 外部嵌套函数的名字空间(相邻的上一级)
    • globals 全局变量,函数定义所在模块的名字空间
    • builtins 内置模块的名字空间

名称空间

标签:空间   name   作用   osi   作用域   int   命名   ace   多少   

原文地址:https://www.cnblogs.com/fantsaymwq/p/9597126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!