lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

 

posted on 2023-04-27 00:37  lnlidawei  阅读(9)  评论(0编辑  收藏  举报