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

Posted 白鹭洲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 申明不使用的本级局部作用域中的名称
























以上是关于Python:函数名称空间与作用域:的主要内容,如果未能解决你的问题,请参考以下文章

Python - 模块

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

Python 名称空间与作用域

python-之名称空间与作用域闭包函数嵌套函数

Python名称空间与作用域

python基础之函数名称空间与作用域