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(),显示全局作用域中的名字对应关系

扫描二维码关注公众号,回复: 1049724 查看本文章

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

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

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

猜你喜欢

转载自www.cnblogs.com/bailo/p/9095097.html