zoukankan      html  css  js  c++  java
  • python 函数的名称空间及作用域

    一:名称空间

    1:什么是名称空间:

      名称空间即:储存名字与值的内存地址关联关系的空间

    2.名称空间的分类:

      内置名称空间:存储器自带的一些名称与值的对应关系,如:print,len,max等;

        生命周期为:在python解释器启动时创建,在解释器关闭时销毁

      全局名称空间:除了内置的,函数内的都是在全局名称空间中

        生命周期为:在执行文件时,创建全局名称空间,所有文件中的代码全部执行完毕后,销毁名称空间(即解释器关闭时)

      局部名称空间:只要在函数内的名称空间就是局部的

        生命周期为:调用函数时创建,函数执行完毕时就销毁

    3.名称空间的加载顺序:内置的-->全局的-->局部的

       名称空间的查找顺序:局部名称空间-->全局名称空间-->内置名称空间(基于当前位置向上层空间查找)

    二. 作用域

      域:区域,范围的意思

        全局名称空间和内置名称空间在使用上没有什么区别,而局部的名称空间只能在局部使用

      空间的范围:global 表示全局范围  就是所谓的全局作用域(globals 查看全局作用域的内容)

            local 表示局部作用域 

      总结:1.查找名称的顺序是基于当前位置向上层空间查找

         2.名称空间的嵌套关系是在函数定义阶段就固定死的,与调用位置无关

    # age=18
    # def func2():
    #     # 明确声明使用全局的变量age(修改a的值)
    #     global age
    #     age=19
    # func2()
    # print(age)
    global 实例

    运行结果为: 19

    a = 1
    def func3():
        a = 10
        def inner():
            # 明确声明 要使用上一层的 a 如果上一层没有,则使用上上一层,但是不能使用全局中的a
            nonlocal a
            a = 100
            print(a)
        inner()
        print('这是func3中的a',a)
    func3()
    nonlocal 实例

    运行结果为: 这是func3中的a 100

      

        

        

  • 相关阅读:
    Django model中的内嵌类(Class Meta)
    drf框架(二)
    drf框架(一)
    html、CSS 简单回顾
    前端vue框架(五)
    前端vue框架(四)
    前端Vue框架(三)
    前端vue框架(二)
    前端开发Vue框架(二)
    mysql 比较两个日期的时间差
  • 原文地址:https://www.cnblogs.com/yang220/p/yang6.html
Copyright © 2011-2022 走看看