如果给被装饰器装饰的函数传递参数的话,需要在装饰器里修改

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import time def timer(func):
def deco(n): #需要在此处设置形参
start_time = time.time()
func(n)
stop_time = time.time()
print("the run time is %s"%(stop_time-start_time))
return deco @timer
def test1(name):
time.sleep(3)
print('My name is %s'%name) test1('John')

运行结果

但是有两个或者多个被装饰的函数需要传递参数的话,这种情况就不太方便了

所以可以直接用*args和**kwargs,不管被装饰的函数有几个,传递的参数有多少,不管是什么类型的参数

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import time def timer(func):
def deco(*args,**kwargs): #需要在此处设置形参
start_time = time.time()
func(*args,**kwargs)
stop_time = time.time()
print("the run time is %s"%(stop_time-start_time))
return deco @timer
def test1(name,age):
time.sleep(3)
print('My name is %s and my age is %s'%(name,age)) @timer
def test2(name,language,city):
time.sleep(1)
print('%s is studying %s in %s'%(name,language,city)) test1('John',22)
test2('Jack',city='beijing',language='Chinese')

运行结果

最新文章

  1. Begin :SWIFT 基本语法
  2. javascript 设计模式-----外观模式
  3. TortoiseSVN文档
  4. HTTP笔记:URI与URL
  5. Linux 设置系统时间和日期 API
  6. Regularized Linear Regression with scikit-learn
  7. 桌面环境与桌面搜索Desktop Search tools
  8. JS基础函数
  9. React 从0开始 消息传递
  10. linux 使用sudo开放普通用户权限
  11. POJ2584 T-Shirt Gumbo【二分图多重匹配】
  12. Android studio怎么创建shape的XML文件
  13. 【转】10 条提升 Android 性能的建议
  14. SQL Server 常用操作XML
  15. JS框架设计读书笔记之-选择器引擎01
  16. 题解 P4783 【【模板】矩阵求逆】
  17. JSONObject、JSONArray、Map、JavaBean的相互转换
  18. 【托业】【新托业TOEIC新题型真题】学习笔记13-题库四-P7
  19. Logging from multiple processes using log4net
  20. Javascript - Vue - 指令

热门文章

  1. mysql基础(2)-数据处理(mysql+pandas)
  2. linux基础(9)-获取时间
  3. 【转】jQuery对象与DOM对象之间的转换方法
  4. ViewPagerAdapter
  5. nodejs 中module.exports 和 exports 区别详细介绍
  6. hdu 5663 Hillan and the girl 莫比乌斯反演
  7. Python之Django总结
  8. numpy加权平均
  9. python定制
  10. mysql数据库优化课程---1、数据库的本质是什么