【1.50】装饰器 --2
高阶函数:
函数接受的参数是一个函数名
函数的返回值是一个函数名
满足这两条的一条都是高阶函数
看看 如何 高阶 嵌套
# 装饰器 # 没有修改被修饰函数的源代码 # 也没有修改被修饰函数的调用方式 # 高阶函数: # 函数接受的参数是一个函数名 # 函数的返回值是一个函数名 # 满足这两条的一条都是高阶函数 print("函数接受一个函数1111111111111111") import time def foo(): time.sleep(0.1) print("hello foo") def test(func): print (func) #打印func函数的地址 start = time.time() func() #加一个括号就直接运行func stop = time.time() print ("函数运行时间:%s"%(stop-start)) test(foo) #满足没有修改原代码、但是修改了函数的调用方式 #原来直接调用 foo(),现在修改了 变为了 test(foo)违背函数的开放封闭原则 print("函数接受一个函数,返回一个函数2222222222222222") #那这里我们在用高阶函数的返回值也是一个函数名 来修改 import time def foo(): time.sleep(0.1) print("hello foo") def test(func): return func foo=test(foo) foo() #这里的foo 就可以运行前面的函数了 #没有改变调用方式 也没有改变函数代码 也满足 高阶函数的接收和返回都是一个函数名 #把上面的结合在一起就 接收和返回都是一个函数名 实现 没有改变调用方式 也没有改变函数代码 #但是 添加附加功能 会出现二次运行 被修饰函数 print("函数接受一个函数,返回一个函数,但是函数要二次运行33333333333333333333333") import time def foo(): time.sleep(0.1) print("hello foo") def test(func): print (func) #打印func函数的地址 start = time.time() func() #加一个括号就直接运行func stop = time.time() print ("函数运行时间:%s"%(stop-start)) return func #会出现二次运行 被修饰函数 foo=test(foo) #实现了没有改变调用方式 也没有改变函数代码 # 也实现高阶函数 多运行一次,这里就必须使用 嵌套函数了 print("函数接受一个函数,返回一个函数,用了嵌套函数4444444444444444") #看看嵌套函数: #在函数内部 调用 其他函数不是函数嵌套 #在函数内部 定义另外的函数 就是函数嵌套 import time def test(func): def wappy(): start = time.time() func() #加一个括号就直接运行func stop = time.time() print ("函数运行时间:%s"%(stop-start)) return wappy @test def foo(): time.sleep(0.1) print("hello foo") foo()
浙公网安备 33010602011771号