首页 > 其他 > 详细

装饰器修饰带参数的功能函数

时间:2020-05-16 23:43:34      阅读:64      评论:0      收藏:0      [点我收藏+]
 1 """
 2 带参数的功能函数的装饰
 3 """
 4 import time
 5 def writeLog(func):
 6     print(访问了方法名:,func.__name__,\t时间:,time.asctime())
 7 
 8 #定义一个闭包
 9 def funOut(func):
10     def funIn(x,y):
11         writeLog(func)
12         return func(x,y)
13     return funIn
14 
15 #添加装饰器
16 @funOut # 相当于执行:f = funOut(sum) 把该功能函数名作为外部函数的变量参数执行
17 def sum(a,b): 
18     return a + b
19 
20 result = sum(10,20)
21 print(两数之和:,result)
22 """
23 分析:执行过程
24     @funOut # 相当于执行:f = funOut(sum) 把该功能函数名作为外部函数的变量参数执行,
25     外部函数执行完返回内部函数的函数名:funIn,指向内部函数,内部函数使用外部函数的变量参数sum,
26     funIn调用内部函数,执行:writeLog(sum)和sum(10,20),并返回。
27 """
28 #功能函数中有三个参数
29 def funOut2(func):
30     def funIn(a,b,c):
31         writeLog(func)
32         return func(a,b,c)
33     return funIn
34 @funOut2
35 def add(a,b,c):
36     return a+b+c
37 result = add(10,20,30)
38 print(三数之和:,result)
1 访问了方法名: sum      时间: Sat May 16 21:49:38 2020
2 两数之和: 30
3 访问了方法名: add      时间: Sat May 16 21:49:38 2020
4 三数之和: 60

 

装饰器修饰带参数的功能函数

原文:https://www.cnblogs.com/monsterhy123/p/12902352.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!