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

原文地址:https://www.cnblogs.com/bailo/p/9095097.html

时间: 2024-10-13 17:22:11

Python:函数名称空间与作用域:的相关文章

函数名称空间与作用域

函数嵌套 函数的嵌套定义 函数内部定义的函数,无法在函数外部使用内部定义的函数 def f1(): def f2(): print('from f2') f2() f1() from f2 函数的嵌套调用 def max2(x,y): if x > y: return x else: return y def max4(a,b,c,d): res1 = max2(a,b) res2 = max2(res1,c) res3 = max2(res2,d) return res3 print(max4

Python开发【第XXX篇】----函数 -名称空间与作用域

一:函数嵌套,在调用一个函数的过程中,又调用了其他函数 def bar(): print('from bar')def foo(): print('from foo') bar()foo()通过函数的嵌套使用,分解成最小的操作,一次调用 二:函数的嵌套定义:在一个函数的内部,又定义了一个函数 def f1(): x = 1 def f2(): print('from f2') f2()f1() 三:名称空间,存放名字的地方,准确的说名称空间是存放名字与变量值绑定关系的地方内置名称空间:pytho

python基础名称空间与作用域

1.名称空间:存放名字与值的绑定关系 2.名称空间分为三种 1)内置名称空间:python解释器自带的名字,python解释器启动就会生成 2)全局名称空间:文件级别定义的名字都会存放于全局名称空间,执行python文件时会产生x=1def func(): passclass Foo(): passimport os 3)局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时生效def func(x,y): z=3 func(1,2)3.三者的加载顺序:内置名称空间>>全局名称空间&

python 14 名称空间与作用域

目录 一.名称空间 1.1 内置名称空间 1.2 全局名称空间 1.3 局部名称空间 1.4 名称空间的一些顺序 二.全局作用域与局部作用域 三.global与nonlocal 一.名称空间 名称空间即存放名字与 对象映射/绑定关系的地方,是对栈区相互独立的划分,先开辟空间再放名称. 1.1 内置名称空间 用来存放一些内置的名字 伴随python解释器的启动而产生,关闭而回收,因而是第一个被加载的名称空间 1.2 全局名称空间 用来存放非内置的.非函数内定义的名字 伴随python文件的开始执行

函数---名称空间和作用域

今日新名词: 1)globals()查看全局作用域的内容; 2)locals()查看局部作用域的内容; 3)global() 调用修改全局作用域变量的权限; 4)nonlocal()调用修改局部作用域变量的权限. ===================================================================== 1)查看全局作用域中的内容:包括名字和对应的值 print(globals()) #查看全局作用域的内容 包括(内置名称空间+全局名称空间) 2)

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

python基础之====函数对象、函数嵌套、名称空间与作用域、装饰器

阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input(

python基础(3):函数对象、函数嵌套、名称空间与作用域、装饰器

函数对象 函数嵌套 名称空间与作用域 闭包函数 装饰器 练习 一 函数对象 #1 可以被引用 def max(x, y): return x if x > y else y func = max print(func(1, 2)) #2 可以当作参数传递 def max(x, y): return x if x > y else y def max_1(x, func): return func(x, 1) print(max_1(2, max)) #3 返回值可以是函数 #4 可以当作容器类

python学习笔记第五节(函数,名称空间,作用域)

python2中 默认存为unicode需要再字符串前加u 循环打印每一行 循环打印整个文件内容方式二下面这种同一时间取一行 先定义后执行 函数定义的时候,只检测语法错误,不执行 函数返回值,默认是元组模式return 只能返回一次 形参与实参 形参就是变量名实参就是值 打破顺序限制 经常变化的值用位置形参,值通常不变的用默认参数.默认参数通常定义成不可变类型.默认参数只在定义时被赋值一次. 可变长参数就是* 关键字参数(关键字参数指的是实参当中指定y=2,z=3等等) *等同于位置参数 函数内