python 装饰器 运行时动态增加功能
2018-02-11 11:30
465 查看
装饰器
定义:作用在代码运行期间动态的增加功能。本质上是返回函数的高阶函数。
装饰函数,用于在已经定义好的某一个函数(或代码段)使用时,输入或者操作自己想要的数据。#一个已有的代码: def Hello(): print(' Word!')
函数对象中,可以拿到函数名字的一个属性是:
__name__
注意这里是前后两个下划线:
._ _name_ _(我将中间放一个空格为了方便看清楚,实际使用时不用中间的空格)
> > > Hello.__name__ > > > 'Hello' > > > f=Hello > > > f() > > > Word!
使用装饰函数,在调用Hello函数时,进行一些操作。
1.装饰器无参数,函数无参数
装饰函数中要把需要被装饰的函数当做参数传进去def decorator(func): print('%s '%func.__name__,end='') #返回被装饰的函数 return func
装饰函数来装饰Hello函数
@decorator def Hello(): print(' Word!')
打印被装饰好的函数
Hello()
输出: Hello Word!
2.装饰器无参数,函数有参数
def decorator(func): print('%s'%func.__name__,end='') return func @decorator def Hello(string): print(string,'❤') Hello(' python ')
输出:
Yeah! Hello python ❤
3.装饰器参数,函数有参数
def decorator(*string): def func(func): print('%s'%string) print('%s'%func.__name__,end='') return func return func @decorator('Yeah!') def Hello(string): print(string,'❤') Hello(' python ')
输出:
Yeah! Hello python ❤
4.通用
def decorator(*string): if len(string)>1: def func1(func): print(string) print('%s'%func.__name__,end='') return func return func1 else: def func2(func): print('no string') print('%s'%func.__name__,end='') return func return func2
相关文章推荐
- 结构型模式02-装饰者模式(动态为一个对象添加职责,就增加功能而言,装饰模式比生成子类更加灵活)
- c#:实现动态编译,并实现动态MultiProcess功能(来自python multiprocess的想法)
- html对select标签实现数据动态增加,删除,修改功能。
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.4,增加系统设置、最近联系人、群功能(源码)
- highestAvailable比较灵活,毕竟大多数功能不需要系统最高权限(四种方法:屏蔽UAC,右键以管理员身份运行,增加manisfest,制作数字证书)
- 【Python】使用装饰器为Python实现运行时类型检查
- AFN中所使用的 '运行时' 的交换类的方法和给类动态增加方法
- python闭包函数,用装饰器添加认证功能
- 使用javascript操作多选列表框,实现动态增加删除,左右移动,上下排序移动等功能。
- 扩展EasyUI datagrid 增加表头右键菜单功能,可动态对列进行显示和隐藏
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(计算器简单功能)——Jason niu
- js动态增加(删除)table数据行的功能
- js 动态增加file实现多文件上传功能并显示路径
- Python利用Nagios增加微信报警通知的功能
- Python利用Nagios增加微信报警通知的功能
- python 动态增加logger handler
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.6,增加语音消息、语音留言等功能
- 在Matlab当中增加VBScript运行功能
- Python--day3 Pycharm的进阶功能和python脚本的运行
- C++设计模式8--装饰模式(Decorator)--动态的增减功能