黑猴子的家:python 装饰器之高阶函数

高阶函数定义

(1)把一个函数名当做实参传给另外一个函数,在不修改被装饰的函数源代码的情况下
    为其添加功能
(2)返回值中包含函数名,不修改函数的调用方式

code 情况1

import time

def bar():
    time.sleep(3)
    print('in the bar')

def t1(func):
    #print(func)
    start_time = time.time()
    print("内存地址(门牌号)",func)
    func()
    stop_time = time.time()
    print("the func tun time is %s" %(stop_time-start_time))

#打印内存地址
t1(bar)

打印

内存地址(门牌号) <function bar at 0x000000000213C268>
in the bar
the func tun time is 3.0

code 情况2

import time

def bar():
    time.sleep(3)
    print('in the bar')

def t2(func):
    print(func)
    return func

#加上括号是把返回值传进去了 ,就不符合高阶函数的定义了
#print(t2(bar()))
print(t2(bar))
#t2(bar())
t3 = t2(bar)
print(t3)
t3()  # run bar

#高阶函数 不修改函数的调用方式, 添加功能, 类似于隐士转换  ,实现了装饰器")
bar = t2(bar)
bar()

打印

<function bar at 0x000000000213C268>
<function bar at 0x000000000213C268>
<function bar at 0x000000000213C268>
<function bar at 0x000000000213C268>
in the bar
<function bar at 0x000000000213C268>
in the bar
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容