python3:函数装饰器
一、代码
1 wit@on:python3$ cat zhuangshiqi
2 #!/usr/bin/env python3
3
4
5
6
7 # import part
8 import os
9 import time
10
11
12
13
14 # print python versions
15 print("\npython information of versions.")
16 os.system("python3 -V")
17 print("\n")
18
19
20
21
22 # codes part
23
24
25 # dingyi zhuangshiqi
26 def get_run_time(f):
27 def inner(*arg, **key):
28 run_start = time.time()
29
30 r = f(*arg, **key)
31
32 run_end = time.time()
33 run_time = run_end - run_start
34 print(f"runtime := {run_time}")
35 print(f"return_value := {r}\n")
36 return r
37 return inner
38
39
40 #shiyong zhuangshiqi
41 @get_run_time
42 def fun1(x):
43 for i in range(x):
44 j = i * 2
45 return j
46
47
48 def fun2(x):
49 for i in range(x):
50 j = i * 2
51 return j
52
53
54
55 # hanshudiaoyong fun1()/fun2()
56 # fun1(10) === get_run_time(fun2)(10)
57 fun1(10)
58 get_run_time(fun2)(10)
59 wit@on:python3$
60 wit@on:python3$
二、运行结果
1 wit@on:python3$ cat zhuangshiqi
2 #!/usr/bin/env python3
3
4
5
6
7 # import part
8 import os
9 import time
10
11
12
13
14 # print python versions
15 print("\npython information of versions.")
16 os.system("python3 -V")
17 print("\n")
18
19
20
21
22 # codes part
23
24
25 # dingyi zhuangshiqi
26 def get_run_time(f):
27 def inner(*arg, **key):
28 run_start = time.time()
29
30 r = f(*arg, **key)
31
32 run_end = time.time()
33 run_time = run_end - run_start
34 print(f"runtime := {run_time}")
35 print(f"return_value := {r}\n")
36 return r
37 return inner
38
39
40 #shiyong zhuangshiqi
41 @get_run_time
42 def fun1(x):
43 for i in range(x):
44 j = i * 2
45 return j
46
47
48 def fun2(x):
49 for i in range(x):
50 j = i * 2
51 return j
52
53
54
55 # hanshudiaoyong fun1()/fun2()
56 # fun1(10) === get_run_time(fun2)(10)
57 fun1(10)
58 get_run_time(fun2)(10)
59 wit@on:python3$
60 wit@on:python3$
61 wit@on:python3$ ./zhuangshiqi
62
63 python information of versions.
64 Python 3.10.6
65
66
67 runtime := 1.2874603271484375e-05
68 return_value := 18
69
70 runtime := 5.245208740234375e-06
71 return_value := 18
72
73 wit@on:python3$
74 wit@on:python3$
三、参考资料
1、python函数装饰器 https://www.bilibili.com/video/BV1Ch4y1W7Kw
本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】; 整理和转载的文章的版权归属于【原创作者】; 转载或引用时请【保留文章的来源信息】:https://www.cnblogs.com/lnlidawei/p/17357807.html