python 中的装饰器
来源:互联网 发布:河北省网络志愿者联盟 编辑:程序博客网 时间:2024/05/22 11:49
由于python的方法为其第一类对象,顾在python中可以很便捷的将方法作为对象进行赋值及传输,而所谓装饰器的实质为:将被调用的方法交付于装饰器控制和管理,装饰器对于方法对象的运行调度具备绝对的控制,这非常适用于logger、方法的权限控制等场景,学过Java等语言的动态代理的同学应该能很容易的接受。接下来我们来通过两个例子来深刻理解,并熟练掌握python装饰器这一出色的特性;
手写装饰器
def say_hello(friend): print('Hello',friend)# 手写装饰器def log_decorator(fun, *args): print('调用方法 %s 前' % (fun.__name__)) r = fun(args) print('调用方法 %s 结束' % (fun.__name__)) return r# 将say_hello方法对象 及其参数传递于log_decorator,其将帮助输出loglog_decorator(say_hello, 'Tom')
输出结果
调用方法 say_hello 前Hello ('Tom',)调用方法 say_hello 结束
基于python支持的装饰器
# 装饰器def logger(func): # 生成一个负责控制方法的内部方法 并返回该方法对象 def inner(self,friend): print ("调用方法 %s 参数: %s" % (func.__name__,friend)) r = func(self,friend) #2 print("调用方法结束") return r return innerclass person: def __init__(self,name): self.name = name @logger # 通过@+装饰器名称 将方法与装饰器绑定 def say_hello(self,friend): print('hello',friend)p = person('Buynow')p.say_hello('Tom')
输出结果
调用方法 say_hello 参数: Tomhello Tom调用方法结束
可以看到python支持的装饰器特性,很好的帮助第二列进行log,只需在方法上加上 @logger ;
阅读全文
0 0
- Python中的装饰器
- python中的装饰器
- python中的装饰器
- python中的装饰器
- Python中的装饰器
- Python中的装饰器
- python中的装饰器
- python中的装饰器
- python中的装饰器
- Python中的装饰器
- Python中的装饰器
- python中的装饰器
- Python中的装饰器
- Python中的装饰器
- Python 中的装饰器
- python中的装饰器
- Python中的装饰器
- python中的装饰器
- Zigbee
- Android SensorService源码分析(一)
- spring data Jpa hibernate实现
- gcm推送
- 等价性证明,白书P322LA4287(有向图强连通tarjan算法)
- python 中的装饰器
- 环信ONE SDK架构介绍
- Python正则表达式一
- ArrarList和数组的转换
- Ubuntu实现树莓派交叉编译
- H5存储
- 欢迎使用CSDN-markdown编辑器
- Windows环境下Composer的安装教程
- hdoj no.2004