高阶函数也遵循函数即变量的形式
高阶函数的形式:
1、把一个函数名当做实参传给另外一个函数(在不修改被装饰函数源代码的情况下为其添加功能)
如:
def abc():
print(‘this is abc‘)
def def(func):
print(func)
def(abc())
====结果=======出来的是一个内存地址
<function agc at 0x00......>
高阶函数实例
import time
def bar():
time.sleep(3)
def test1(func):
start_time = time.time()
func()
stop_time = time.time()
print(‘func run time %s‘ %(stop_time - start_time ))
test1(bar) #注意bar后面不能加括号,一加括号就不是传内存地址了,而把bar的返回值传给test1了,就不是高阶函数了
2、返回值中包含函数名(不修改函数的调用方式)
import time
def bar():
time.sleep(3)
print(‘this is bar)
def test1(func):
start_time = time.time()
func()
stop_time = time.time()
print(‘func run time %s‘ %(stop_time - start_time ))
return func
bar = test1(bar)
返回的是一个内存地址
时间: 2024-10-25 17:42:26