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 申明不使用的本级局部作用域中的名称

  • 相关阅读:
    C#中IEnumerable、ICollection、IList、List之间的区别
    H5中画图标签Canvas---画矩形,画线,画圆,渐变色,图形载入
    centos启用ftp功能
    CentOS 7 安装FTP服务器(vsftpd)
    Linux下如何修改用户默认目录
    Centos搭建FTP服务器
    MyBatis 示例之存储过程
    MyBatis:MyBatis操作MySQL存储过程
    mybatis的select、insert、update、delete语句
    日常运维中的相关日志切割处理方法总结 [Logrotate、python、shell脚本实现 ]
  • 原文地址:https://www.cnblogs.com/bailo/p/9095097.html
Copyright © 2011-2022 走看看