ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

闭包的特殊用法

2020-05-16 16:55:40  阅读:239  来源: 互联网

标签:闭包 func2 func1 特殊 16 May 用法 2020 Sat


 1 # 闭包的特殊用途:不修改源代码的前提下,添加新功能
 2 # 添加日志输出信息
 3 import time
 4 def writeLog(func):
 5     try:
 6         file = open('writeLog.txt','a',encoding='utf-8')
 7         # 向文件中写入日志信息(访问:文件名 时间:xxxx-xx-xx)
 8         file.write('访问:')
 9         file.write(func.__name__)
10         file.write('\t')
11         file.write('时间:')
12         file.write(time.asctime())
13     except expression as e:
14         print(e.args)
15     finally:
16         file.close()
17 
18 def func1():
19     # writeLog(func1) # 直接修改源码添加日志信息
20     print('功能1')
21 def func2(): 
22     # writeLog(func2) # 直接修改源码添加日志信息
23     print('功能2')
24 
25 # 使用闭包,不修改func1 he func2 的功能代码,添加日志信息
26 def funcOut(func):
27     def funcIn():
28         writeLog(func)
29         func()
30         print('调用',func.__name__,'结束')
31     return funcIn
32     
33 func1 = funcOut(func1) # 变量 fun1 和 funcIn 均指向内部函数funcIn()
34 func1() # 调用 fun1 所指向的函数 funcIn(),即对内部函数进行调用
35        # 调用内部函数后:输出日志信息,输出功能函数fun1
36 func2 = funcOut(func2)
37 func2() # 对内部函数进行调用
1 功能1
2 调用 func1 结束
3 功能2
4 调用 func2 结束
1 访问:fun1    时间:Sat May 16 16:20:21 2020
2 访问:fun2    时间:Sat May 16 16:20:21 2020
3 访问:fun1    时间:Sat May 16 16:29:44 2020
4 访问:func1    时间:Sat May 16 16:42:09 2020
5 访问:func1    时间:Sat May 16 16:42:28 2020
6 访问:func2    时间:Sat May 16 16:42:28 2020
7 访问:func1    时间:Sat May 16 16:43:49 2020
8 访问:func2    时间:Sat May 16 16:43:49 2020

 

标签:闭包,func2,func1,特殊,16,May,用法,2020,Sat
来源: https://www.cnblogs.com/monsterhy123/p/12901167.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有