zoukankan      html  css  js  c++  java
  • 第二模块 3.10 名称空间

    又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方

    python里面有很多名字空间,每个地方都有自己的名字空间,互不干扰,不同空间中的两个相同名字的变量之间没有任何联系。

    名称空间有4种:LEGB

    • locals:函数内部的名字空间,一般包括函数的局部变量以及形式参数

    • enclosing function:在嵌套函数中外部函数的名字空间, 若fun2嵌套在fun1里,对fun2来说,fun1的名字空间就enclosing.

    • globals:当前的模块空间,模块就是一些py文件。也就是说,globals()类似全局变量。

    • builtins: 内置模块空间,也就是内置变量或者内置函数的名字空间,print(dir(builtins))可查看包含的值。

    作用域查找顺序

    当程序引用某个变量的名字时,就会从当前名字空间开始搜索。搜索顺序规则便是:LEGB。即locals -> enclosing function -> globals ->builtins。一层一层的查找,找到了之后,便停止搜索,如果最后没有找到,则抛出在NameError的异常。

    level = 'L0'
    n = 22
    def func():
        level = 'L1'
        n = 33
        print(locals())
        def outer():
            n = 44
            level = 'L2'
            print("outer:",locals(),n)
            def inner():
                level = 'L3'
                print("inner:",locals(),n) #此外打印的n是多少?
            inner()
        outer()
    func()
  • 相关阅读:
    $resource详解
    大白话讲解Promise(一)
    《AngularJS》5个实例详解Directive(指令)机制
    Openstack实现共有云VPC的SDN网络
    Openstack实现共有云多flat网络
    Openstack使用NFS作为后端存储
    Openstack块存储cinder安装配置
    Openstack创建镜像
    Openstack深入了解虚拟机
    Python全栈day26-27(面向对象进阶)
  • 原文地址:https://www.cnblogs.com/kissfire008/p/11747177.html
Copyright © 2011-2022 走看看