|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
装饰器添加参数传递:
- import time
- # 高阶函数深入
- def bar1():
- print('Begin to sleep')
- time.sleep(2)
- print('In the bar1')
- return 0
- def bar2():
- print('Begin to sleep')
- time.sleep(3)
- print('In the bar2')
- return 0
- def test(func): # 定义装饰器
- print(func)
- # 上面打印的是函数的地址,即储存内容的‘门牌号’
- func() # 运行函数的内容
- return func # 返回参数函数,使参数函数的调用方式不变
- bar1 = test(bar1)
- bar1() #参数函数的调用方式不变
- # 下面设计装饰器,计算test1、test2的运行时间
- def timer(func):
- def deco(*args, **kwarge): # *args, **kwarge:表示非固定参数,灵活变通
- start_time = time.time()
- func(*args, **kwarge) # 在函数的参数里面需要带相应的*、**
- stop_time = time.time()
- print('The func running time is %s' % (stop_time - start_time))
- return 0
- return deco
- @timer #相当于test1=timer(test1)
- def test1():
- print('Begin to sleep')
- time.sleep(2)
- print('In the test1')
- return 0
- @timer
- def test2(name, age, **kwarge):
- print(name)
- print(age)
- print(kwarge) # 实际输出时不能带相应的*、**
- return 0
- print('Decorator2 begins to run!')
- test1() #因为第40行有@timer,所以可以直接用
- test2("Flagon", 33, Height='173cm', Gender='Male')
复制代码 |
|