高阶函数尝试装饰器

1.函数的参数是一个函数名  (难以保证被调用函数的调用方式不被修改 就比如下面第二个代码块)

2.函数的返回值是一个函数名  

3.满足以上任何一个条件都可以称之为高阶函数

def foo():
    print('from the foo')
def test(func):   #test的参数是foo(一个函数名) 因此test是一个高阶函数 但是foo不是一个高阶函数
    return func

test(foo)
#对上述函数进行foo运行的时间统计  

def
test(func): print(func) start_time=time.time() func() stop_time = time.time() print('函数运行时间是 %s' % (stop_time-start_time)) # foo() #本来应该用这种方式调用foo test(foo) #更改了foo函数的调用方式
def foo():
    time.sleep(3)
    print("你好阿龙氏夫妇")

def cat(func):
    start_time = time.time()
    func()  #第一次执行
    end_time = time.time()
    print("函数的运行时间是%s" %(start_time-end_time))
  return func
foo = cat(foo)  #运用高阶函数的两个原则 参数是函数名 而且返回值是函数名
foo()  #第二次执行

你好阿龙氏夫妇      #由此可以看到foo执行了两次 肯定不能这么使用 所以高阶函数满足不了装饰器的运用
函数的运行时间是-3.000171661376953
你好阿龙氏夫妇

猜你喜欢

转载自www.cnblogs.com/newt/p/9012687.html
今日推荐