高阶函数-Day3

一、高阶函数

实现高阶函数有两个条件:

  • 把一个函数名(函数即变量)当做实参传给另外一个函数
  • 返回值中包含函数名

 

1、把一个函数名(函数即变量)当做实参传给另外一个函数

作用:在不修改被装饰函数源代码的情况下为其添加功能

import time

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

def test1(func):
    print(func)    #打印函数内存地址
    start_time = time.time()
    func()   #获取bar函数的运行时间
    stop_time = time.time()
    print("the func run thr is %s"%(stop_time-start_time))

test1(bar)  #将bar作为位置参数传递给func,函数调用方式被改变

#返回值
<function bar at 0x0000012EFFB80598>
in the bar
the func run thr is 3.0008089542388916

 

2、返回值中包含函数名

作用:不修改函数调用方式

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

def test1(func):
    print(func)
    start_time = time.time()
    func()   #获取bar函数的运行时间
    stop_time = time.time()
    print("the func run thr is %s"%(stop_time-start_time))

test1(bar)  #将bar作为位置参数传递给func

#返回值 
<function bar at 0x000002AFDC7C0598>
 in the bar
posted @ 2018-01-03 13:57  Wesley·zk  阅读(125)  评论(0编辑  收藏  举报