zoukankan      html  css  js  c++  java
  • 函数(四)-命名空间与作用域

    一、命名空间

    1 概念:保存对象和值的字典

    2 分类

    • 局部命名空间:函数内定义内容。
    • 全局命名空间:模块级别,当前所有的py文件
    • 内置命名空间:解释器级别,内置的方法等

    3 访问命名空间

    • locals():访问局部命名空间:根据调用的位置有关系
    • globals():访问全局命名空间:与调用位置无关

    4 加载顺序:从大到小

    5 查找顺序:从小到大

    # 情形1
    id = 10
    
    def func():
        id = 20 
        print(id)  # 20   
            
    func()  # 
    
    
    
    # 情形2
    id = 10
    
    def func():
        # id = 20 
        print(id)  # 10 
           
    func() 
    
    
    # 情形3
    # id = 10
    
    def func():
        # id = 20 
        print(id)  # id函数
            
    func() 
    

    二、 作用域,局部变量和全局变量

    1 概念

    作用域:一个对象起作用的范围。

    局部变量:仅在函数内部起作用的变量。

    全局变量:在整个文件中起作用的变量。

    2 作用域分类(LEGB)

    • Local(函数内部)局部作用域

    • Enclosing(嵌套函数的外层函数内部)嵌套作用域(闭包)

    • Global(模块全局)全局作用域

    • Built-in(内建)内建作用域

    a = 10
    def func():
        b = 20
        def inner():
            c = 30
            print(c)
        inner()
        print(b)
        
    print(a)
    
    

    问题:作用域和命名空间关系?

    作用域是一个或多个命名空间叠加的结果。

    注意:

    在Python中,模块(module),类(class)、函数(def、lambda)会产生新的作用域。

  • 相关阅读:
    编译安装linux内核步骤
    怎样在github上协同开发
    在JSP里使用CKEditor和CKFinder
    tomcat结合nginx使用小结
    JAVA学习笔记——(五)
    JAVA学习笔记——(四)
    JAVA学习笔记——(三)
    JAVA学习笔记——(二)
    JAVA学习笔记——(一)
    ansible
  • 原文地址:https://www.cnblogs.com/duxiangjie/p/14085051.html
Copyright © 2011-2022 走看看