zoukankan      html  css  js  c++  java
  • 函数进阶之命名空间

    命名空间是名称到对象的映射。命名空间是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立没有关系的,一个命名空间中不能有重名,但是不同的命名空间可以重名而没有任何影响。

    x = 1
    在内存中是{x:4304947712} x对应的是1的内存地址

    名称空间分三种

    locals: 是函数内的名称空间,包括局部变量和形参。
    globals: 全局变量,函数定义所在模块的名字空间,也就是打印出这个程序的所有变量。
    builtins: 内置模块的名字空间

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

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

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

    作用域的查找顺序

    LEGB
    L:locals
    E: enclosing 相邻的上级
    G: globals
    B: builtins


    例子
    n = 10
    
    
    def func():
        n = 20
        print('func', n)
    
        def func2():
            n = 30
            print('func2', n)
    
            def func3():
                print('func3:', n)
    
            func3()
    
        func2()
    
    
    func()
    # func 20
    # func2 30
    # func3: 30
  • 相关阅读:
    git 只添加cpp文件
    URI和URL学习
    scanpy中常用函数
    特征去量纲方法
    排列组合数计算公式
    UML图
    行测图形推理笔记-
    nis服务器实现用户帐号管理同步
    rsh配置双方主机免密
    两周实习的总结
  • 原文地址:https://www.cnblogs.com/lshedward/p/9970434.html
Copyright © 2011-2022 走看看