zoukankan      html  css  js  c++  java
  • Python:函数名称空间与作用域:

    Python:函数名称空间与作用域

    函数对象:(第一类对象)

      定义:函数是第一类对象:函数名可以当做数据来使用

            1.可以直接被引用,加()就能运行
            def foo():
                print("from foo")
            f=foo
            f()
            
            2.可以当作参数传入另一个函数
            def warpper(x):
                x()            
            warpper(foo)
            
            3.可以当作另外函数的返回值
            def warpper2():
                return foo        
            f=warpper2()
            print(f is foo)
            
            4.可以当作容器类型的一个元素
            l=[foo,1,2]
            l[0]()
            

     名称空间:

      定义:存放名字与值绑定关系的地方(实际上是一块隔离的内存空间)

      分类:   

        内置名称空间:
            存放的是:内置的名字与值的绑定关系
            生效:python解析器启动
            失效:python解析器关闭

        全局名称空间:
            存放的是:文件级别定义的名字与值的绑定
            生效:执行python文件时,以该文件级别定义的名字与值的绑定关系
            失效:文件执行完毕

        局部名称空间:
            存放的是:函数内部定义的名字与值的绑定关系
            生效:调用函数时,临时生效
            失效:函数调用结束

        

        加载顺序:先内资,再全局,最后局部
        寻找顺序:先局部,再全局, 最后内置

    作用域:     

      注意:作用域关系,在函数定义时,就已经固定了,与调用位置无关。
                使用函数对象可以打破作于域的层级关系。
        

        全局作用域:包含内置名称空间与全局名称空间。
        全局存活,全局生效
            globals(),显示全局作用域中的名字对应关系

                   局部作用域:包含局部名称空间
         临时存活,局部生效
                                 locals(),显示当前局部作用域中的名字对应关系

        相关关键字:都是在函数内部使用

                             global 申明使用全局作用域中的名字
              nonlocal 申明不使用的本级局部作用域中的名称

  • 相关阅读:
    HTML标签
    Web标准
    Web服务器 (获取域名)
    网站favicon.ico 图标
    模块化
    外边距
    h5css产品模块设计
    用策略模式(自定义注解+包扫描)解决if else 太多的问题
    方法区 永久代 元空间 常量池
    javac jar java
  • 原文地址:https://www.cnblogs.com/bailo/p/9095097.html
Copyright © 2011-2022 走看看