python 装饰器 和 debug 结合,方便小白理解(一步步解读)
2018-07-29 11:54
295 查看
#仅供参考:
[code]''' 带不定长参数的装饰器 debug 共计17步\ 右侧注释为debug时程序依次执行的步骤。从1开始,共计17步 ''' def outer(fn): # 1 (读取告诉python:outer为函数而不是变量),3(将装饰器中信息:func函数传入outer装饰器的倒数第二层中的fn形参(因为倒数第一层是传递func参数用的,存在多层嵌套的装饰器,但是吧倒数第一层和倒数第二层是固定的参数:分别是被装饰函数的函数对象和函数参数)) def inner(*args,**kwargs): #4(按照上下顺序:读取inner并识别为函数对象), start = time.time() #8(将获取的实参直接放入第6步中的形参中,即第4步的倒数第一层函数。依次执行inner函数), fn(*args,**kwargs) #注意,这里给fn传参依然需要井号 #9(依次执行inner并传递实参,遇见func函数,开始调用func函数并执行func函数的过程),14(成功完成了func函数的执行), runtime = time.time() - start #15(顺序执行下一步), print(runtime) #16(获得装饰器的最终结果,并传递给func实例对象), return inner #5(读取最外层函数的返回值,其他程序也都是这样,先读取函数名,在读取前套函数和返回值,总体上是从上到下), #装饰器 @outer # 2(读取装饰器和被装饰的函数func,下一步吧func的信息传送给装饰器outer中的形参fn),6(顺序读取装饰器,并将下一行视为outer(func)(user,name,pwd)函数,最后一个括号有待传的三个形参数), def func(user,name,pwd): # for i in range(1): #10(执行func函数),12(执行func函数,下一轮for为FALSE,跳过for下面的语句), time.sleep(1) #11(执行func函数), print(user,name,pwd) #13(执行func函数), func('yangyong','yangliu',1232445) #7(顺序读取到执行函数:func的实例对象并且获得实参),17(绕了一圈,结果被传递回来,gg,完毕), #--------------------------------------------------------------------------------------------------------------
如有理解偏差,恳请矫正。
阅读更多相关文章推荐
- 详解Python的装饰器--一步一步理解装饰器
- Python中的装饰器理解
- python简单理解迭代器,生成器,装饰器
- python基础===如何理解装饰器
- [Python] 对 Python 装饰器的理解心得
- 简单理解python中的装饰器
- python小白之僵尸进程和孤儿进程的理解(转载)
- 理解Python中的装饰器
- python 装饰器模式 我的理解
- 理解 Python 装饰器看这一篇就够了
- Python 装饰器的理解
- python 装饰器理解
- Python 之小白的系统进程的理解之进程池Pool
- 理解Python中的装饰器
- 简单 12 步理解 Python 装饰器
- python中装饰器的理解
- 理解 Python 中的装饰器 - 看引擎 KENGINE | 看看新闻网 IT资讯
- 理解 Python中的装饰器
- Python 之小白的系统进程的理解之进程间通信
- 传说中Python最难理解的点|看这完篇就够了(装饰器)