zoukankan      html  css  js  c++  java
  • 名称空间和作用域

    名称空间相关:

    1.名称空间Namespaces:指的是存放名字和值的内存地址绑定关系的的地方(内存空间)

    2.名称空间可以被分为三大类:

      内置名称空间:存放Python解释器自带的名字

        产生:Python解释器启动的时候则产生

        销毁:Python解释器结束运行销毁

      全局名称空间:在文件内定格定义的变量和函数名(包含流程控制和定格定定义的函数名)

        产生:执行Python程序时产生

        销毁:Python程序执行完成时结束

      局部名称空间:函数内部定义的名字的空间

        产生:调用函数时产生

        销毁:函数调用结束时结束

    三种名称空间的产生的先后顺序:内置名称空间---》全局名称空间---》局部名称空间

    查找名字的顺序:当前顺序往外一层层的寻找

      如果当前在局部空间:局部--》全局--》内置

      如果在全局名称空间:全局--》内置

    x=0#全局
    def f1():
        # x=1#f1局部名称
        def f2():
            # x=2#f1下的f2局部名称空间
            def f3():
                # x=3#f1下的f2下f3的局部内存空间
                print(x)
            f3()
        f2()
    f1()

    作用域:指的是作用的范围

      全局作用域:包含内置与全局名称空间的名称

        特点:全局存活,全局有效

      局部作用域:包含局部名称空间的名字

        特点:临时存活,局部有效

    重点:

      作用域关系是在函数定义阶段就已经固定死了,与调用位置无关。

    范例一:

    def f1():
        print(xxx)#定义函数处开始寻找,再一层一层向外查找
    xxx=111
    
    def f2():
        xxx=222
        f1()#与调用的位置无关
    f2()
    #111

    范例二:

    xxx=111
    def f1():
        print(xxx)
        # xxx=222#当要调用同级名称,先定义在使用,这样会报错
        yyy=222
        print(yyy)
    
    f1()
  • 相关阅读:
    【shell】 for循环
    【shell】case语句
    【shell】if语句
    【shell】nmap工具的使用
    spring3 循环依赖
    spring3 DI基础
    spring3系列一
    正则表达式学习网址
    常用正则表达式
    hibernate延迟加载
  • 原文地址:https://www.cnblogs.com/msj513/p/9707457.html
Copyright © 2011-2022 走看看