标签:闭包 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。