# Auther: Aaron Fan
'''
# 高阶函数:把一个函数名,以实参的形式,传给这个函数的形参,这个函数就称为高阶函数。比如下面的形参c,对应的实参是一个函数名abs。
# 函数abs()的功能是取绝对值
def add(a,b,c):
return c(a) + c(b)
add_value = add(-9,1,abs)
print(add_value)
'''
# 最正确的高阶函数解释
# 满足下面两个条件之一,就可称之为高阶函数:
# 1、把一个函数名当做一个实参,传给另外一个函数
# 2、返回值中包含函数名(不修改函数的调用方式)
# 示例1:
"""
import time
def bar():
time.sleep(1)
print('函数bar')
def test1(func): #高阶函数(满足了条件1)
start_time = time.time()
func()
stop_time = time.time()
print("这个函数的运行时间是 %s" % (stop_time-start_time))
test1(bar)
"""
# 示例2:
import time
def bar(): #高阶函数(满足了条件2)
time.sleep(1)
print("in the bar")
def test2(func):
print(func)
return func
bar=test2(bar)
bar()