Enjoy the good life everyday!
关闭
欢迎来PyGo个人空间 ^_^
Python模块之装饰器 | PyGo²

Python模块之装饰器

Python Python模块系列
Python模块系列

Python项目常用的模块代码。

版本

名称 版本
Python 3

语法糖

个人的理解,总结起来一句话就是把方法作为参数的方法。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# -*- coding: utf-8 -*-

"""
------------------------------------------------

describe:
Decorators

base_info:
__author__ = "PyGo"
__time__ = "2023/10/22 20:58"
__version__ = "v.1.0.0"
__mail__ = "gaoming971366@163.com"
__blog__ = "www.pygo2.top"
__project__ = "open2lisapi"

usage:

@deprecated
@timer
@debug
def add(a, b, *args, **kwargs):
for i in range(10):
print(i)

add(100, 300, 1000, c=2000, d=2000)

design:

reference urls:

python version:
python3


Enjoy the good life everyday!!!
Life is short, I use python.

------------------------------------------------
"""

# ------------------------------------------------------------
# usage: /usr/bin/python decorators.py
# ------------------------------------------------------------
from datetime import datetime
from functools import wraps
import warnings


def decorator(func):
"""
装饰器模板
"""
@wraps(func)
def __wrapper(*args, **kwargs):
# 额外功能
result = func(*args, **kwargs)
# 额外功能
print("[Decorator] >>>>> %s." % func.__name__)
return result
return __wrapper


# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
def timer(func):
"""
方法执行时间装饰器
"""
@wraps(func)
def __wrapper(*args, **kwargs):
start_time = datetime.now()
result = func(*args, **kwargs)
end_time = datetime.now()
cost = round((end_time - start_time).microseconds * pow(0.1, 6), 3)
print("[timer] >>>>> %s cost %s seconds." % (func.__name__, cost))
return result
return __wrapper


# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
def debug(func):
"""
debug装饰器
"""
@wraps(func)
def __wrapper(*args, **kwargs):
print('* ' * 55)
print("[Debugging] >>>>> %s - args: %s, kwargs: %s" % (func.__name__, args, kwargs))
print('* ' * 55)
return func(*args, **kwargs)
return __wrapper


# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
def deprecated(func):
"""
方法过时提示
"""
@wraps(func)
def __wrapper(*args, **kwargs):
warnings.warn("[%s] is deprecated and will be removed in future versions." % func.__name__, DeprecationWarning)
return func(*args, **kwargs)
return __wrapper
坚持学习。。。。。。
  • 本文作者:mingliang.gao【一个爱老婆Python程序猿。。。。。。】
  • 本文链接: http://pygo2.top/articles/29210/
  • 版权声明: 本博客所有文章欢迎转载,转载请注明出处!
觉得有帮助 请偶坐个公交车
0%