Python 装饰器
来源:互联网 发布:hbase是关系数据库吗 编辑:程序博客网 时间:2024/06/10 02:10
装饰器:本质仍是函数,用来装饰目标函数的函数。
使用环境:在不改变源代码的前提下,对原函数添加新的功能。
使用原则:1、不改变源代码;
2、不改变原函数调用方式;
工作原理:1、将目标函数做为参数传入装饰器(decorator)函数中;
2、在装饰器(decorator)函数中,在调用目标函数之前或之后,调用附加功能的函数来装饰目标
函数,然后调用目标函数,并返回结果,起到装饰作用。
装饰器函数又分以下几种:
1、目标函数带参数与不带参数;
import time# 目标函数不带参数def decorator(func): def wrapper(): start_time = time.time() time.sleep(3) func() stop_time = time.time() print("test run time is %d" % (start_time - stop_time)) return wrapper@decorator # 相当于 test = decorator(test)def test(): print("run test")test()print("我是分割线".center(40, "*"))# 目标函数带参数def decorator1(func): def wrapper(*args, **kwargs): start_time = time.time() time.sleep(5) func(*args, **kwargs) stop_time = time.time() print("test1 run time is %d" % (start_time - stop_time)) return wrapper@decorator1 # 相当于 test1 = decorator1(test1)def test1(name, age=26): print("run test1") print("%s is %d year old" % (name, age))test1("Jack")
运行结果:
>>> ================================ RESTART ================================>>> run testtest run time is -3*****************我是分割线******************run test1Jack is 26 year oldtest1 run time is -5*****************我是分割线******************>>>
2、装饰器函数带参数与不带参数;
对于无参数的装饰器,其装饰器函数的参数是要被装饰的函数对象名;
对于有参数的装饰器在调用时使用的是应用的参数
对于装饰器带参数,比较迷惑,这里放上参考链接:
http://blog.csdn.net/dreamcoding/article/details/8611578
阅读全文
0 0
- python装饰器装饰类
- [python]python装饰器
- Python装饰器学习
- Python装饰器
- python 装饰器
- Python装饰器
- python 装饰器 应用
- python 装饰器2
- Python装饰器学习
- python装饰器
- python装饰器
- python 装饰器入门
- python装饰器
- python装饰器
- python 装饰器'@'
- python装饰器
- Python装饰器详解
- python 装饰器
- Android Tip: Java代码打印Android堆栈
- CSS之容器按比例缩放
- debug模式与relese模式下!
- NodeJs入门
- VC INI文件实现多语言版本
- Python 装饰器
- Centos 配置eth0 提示Device does not seem to be present
- 11.数据库总结
- CRC校验
- layer弹出层不居中解决方案,仅显示遮罩,没有弹窗
- struct timespec 和 struct timeval
- python 数据分析-numpy
- 003_详解docker架构
- 12.数据库概念相关