码迷,mamicode.com
首页 > 其他好文 > 详细

函数名,闭包,装饰器

时间:2018-02-04 15:33:55      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:pos   name   int   fun   技术   返回值   turn   ali   分享   

技术分享图片
#输出的__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__

 

    

 

 

函数名,闭包,装饰器

标签:pos   name   int   fun   技术   返回值   turn   ali   分享   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!