python_59_装饰器2

#匿名函数,无函数名
calc=lambda x:x*3
print(calc(3))

sum=lambda x,y,z:x+y+z
print(sum(1,2,3))

'''
高阶函数
    a:把一个函数名当做一个实参传递给另一个函数(在不修改被饰函数源代码的情况下为其添加功能)
    b:返回值包含函数名(不修改函数的调用方式)
'''
def bar():
    print('in the bar')
def test(func):
    print(func)
    #func()
test(bar)#结果:bar的内存地址<function bar at 0x01DFCC90>
print(bar)

import time
def bar1():
    time.sleep(2)
    print('in the bar1')
def test1(func):
    start_time=time.time()
    func()#运行bar1()
    stop_time=time.time()
    print('the func run time is %s'%(stop_time-start_time))
test1(bar1)

import time
def bar2():
    time.sleep(1)
    print('in the bar2')
def test2(func):
    print(func)#打印的是func的内存地址
    print(func())#调用函数func,并且打印func函数的返回值
    return func#返回func的内存地址
t=test2(bar2)#将test2函数的返回值赋值给t,即将bar2的内存地址赋给t
t()#运行bar2函数
bar2=test2(bar2)#bar2被重新赋值
bar2()

  

posted @ 2018-01-28 21:06  耐烦不急  阅读(190)  评论(0编辑  收藏  举报