python装饰器
来源:互联网 发布:陌陌直播软件 编辑:程序博客网 时间:2024/06/05 20:50
pycthon装饰器
无参数的装饰器
#coding=utf-8def log(func): def wrapper(): print 'before calling ',func.__name__ func() print 'end calling ',func.__name__ return wrapper@logdef hello(): print 'hello'@logdef hello2(name): print 'hello',nameif __name__=='__main__': hello()
带参数的装饰器:
#coding=utf-8def log(func): def wrapper(name): print 'before calling ',func.__name__ func(name) print 'end calling ',func.__name__ return wrapper@logdef hello(name): print 'hello',name@logdef hello2(name): print 'hello',nameif __name__=='__main__': hello('haha')
多个参数的时候:
#coding=utf-8def log(func): ''' *无名字的参数 **有名字的参数 :param func: :return: ''' def wrapper(*args,**kvargs): print 'before calling ',func.__name__ print 'args',args,'kvargs',kvargs func(*args,**kvargs) print 'end calling ',func.__name__ return wrapper@logdef hello(name,age): print 'hello',name,age@logdef hello2(name): print 'hello',nameif __name__=='__main__': hello('haha',2) hello(name='hehe',age=3)
输出:
end calling hello
before calling hello
args () kvargs {'age': 3, 'name': 'hehe'}
hello hehe 3
end calling hello
装饰器里带参数的情况
本质就是嵌套函数
#coding=utf-8def log(level,*args,**kvargs): def inner(func): def wrapper(*args,**kvargs): print level,'before calling ',func.__name__ print level,'args',args,'kvargs',kvargs func(*args,**kvargs) print level,'end calling ',func.__name__ return wrapper return inner@log(level='INFO')def hello(name,age): print 'hello',name,age@logdef hello2(name): print 'hello',nameif __name__=='__main__': hello('haha',2)
阅读全文
0 0
- python装饰器装饰类
- [python]python装饰器
- Python装饰器学习
- Python装饰器
- python 装饰器
- Python装饰器
- python 装饰器 应用
- python 装饰器2
- Python装饰器学习
- python装饰器
- python装饰器
- python 装饰器入门
- python装饰器
- python装饰器
- python 装饰器'@'
- python装饰器
- Python装饰器详解
- python 装饰器
- SpringCloud零基础上手(四)——服务发现以及Feign(声明式RESTful服务调用)
- 贪吃蛇游戏总结
- Mybatis的if test字符串比较 报NumberFormatException错误
- c语言解决-分治法在数值问题中的应用—矩阵相乘问题
- 单个字符输入和输出(顺序结构)
- python装饰器
- 【备忘】最新spark/hadoop/hbase/hive/kafka/redies大数据视频教程
- wifi p2p学习
- C/C++面试常见问题总结
- select2应用在modal模态框里,select2搜索框不能输入值
- Java 中的闭包之争
- SAP收货后更改采购单价格
- Android7.0 PowerManagerService(3) 核心函数updatePowerStateLocked的主要流程
- Linux命令(19)——tar命令