首页 > 其他 > 详细

函数名,闭包,装饰器

时间:2018-02-04 15:03:27      阅读:189      评论:0      收藏:0      [点我收藏+]
技术分享图片
#输出的__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__

 

    

 

 

函数名,闭包,装饰器

原文:https://www.cnblogs.com/leiwei123/p/8413105.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!