函数名,闭包,装饰器

Posted leiwei123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数名,闭包,装饰器相关的知识,希望对你有一定的参考价值。

技术分享图片
#输出的__closure__有cell元素 :是闭包函数
def func():
    name = eva
    def inner():
        print(name)
    print(inner.__closure__)
    return inner

f = func()
f()

#输出的__closure__为None :不是闭包函数
name = egon
def func2():
    def inner():
        print(name)
    print(inner.__closure__)
    return inner

f2 = func2()
f2()
View Code

 

一:函数名

1, 函数名的内存地址,print(func)
2, 函数名可以赋值给其他变量
3, 函数名可以当做容器类的元素

技术分享图片
def f1():
     print(f1)
def f2():
     print(f2)
 def f3():
     print(f3)
 l = [f1,f2,f3]
 d = {f1:f1,f2:f2,f3:f3}
# #调用
l[0]()
d[f2]()
View Code

4, 函数名可以当做函数的参数.
5, 函数名可以当做函数的返回值.

技术分享图片
def func2():
    print(222)
def func3(x):
    # print(x)  # x=func2()
    return x
f = func2
f()        #func2()
ret = func3(func2)  # ret=func2
ret()              #func2()
func3(func2)()

def f1():
    print(f1)
def func1(argv):
    argv()       #f1()
    return argv
f = func1(f1)
f()
View Code

二:闭包

1, 内层函数,对外层函数(非全局)的变量的引用,叫做闭包。

技术分享图片
def func():
    name = eva
    def inner():
        print(name)
    return inner

f = func()
f()
View Code

2, 闭包函数的检测:方法__closure__

 

    

 

 



以上是关于函数名,闭包,装饰器的主要内容,如果未能解决你的问题,请参考以下文章

5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器

python11 装饰器与闭包

装饰器,闭包,高阶函数,嵌套函数

函数名闭包装饰器

python 函数名 闭包 装饰器 day13

闭包与装饰器