时间:2021-05-22
一般情况下,在函数中可以使用一个装饰器,但是有时也会有两个或两个以上的装饰器。多个装饰器装饰的顺序是从里到外(就近原则),而调用的顺序是从外到里(就远原则)
样例:
def func1(func): print(1) def inner1(*args, **kwargs): print(2) res = func(*args, **kwargs) print(3) return res print(4) return inner def func2(func): print(5) def inner2(*args, **kwargs): print(6) res = func(*args, **kwargs) print(7) return res print(8) return inner<br data-filtered="filtered">@func1@func2def go(): print("running..")<br data-filtered="filtered">go()其实函数go的执行本质是如下:
即b(func1(func2(go)))()
等同如下效果:
a=func2(go);a的内容为inner2函数的函数地址;因此输出的内容为5,8两个值
go=func1(a);此处的go是一个新变量,而非go函数的标识,go的内容为inner1函数的函数地址,因此输出的内容为1,4两个值
go();执行inner1()函数,里面的func的值为inner2,而inner2里面的func的值为真正定义的go函数地址,因此输出的内容,因此为2,6,running,7,3
即go(func1(func2(go)))()
实测结果:
C:\Python27\python.exe D:/code-program/lianxi-test/route.py581426running..73 Process finished with exit code 0以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
探究多个装饰器执行顺序装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思。疑问大部分涉及
前言一般情况下,在函数中可以使用一个装饰器,但是有时也会有两个或两个以上的装饰器。多个装饰器装饰的顺序是从里到外(就近原则),而调用的顺序是从外到里(就远原则)
本文实例讲述了Python实现对一个函数应用多个装饰器的方法。分享给大家供大家参考,具体如下:下面的例子展示了对一个函数应用多个装饰器,可以加多个断点,在deb
本文实例讲述了python装饰器原理与用法。分享给大家供大家参考,具体如下:你会Python嘛?我会!那你给我讲下Python装饰器吧!Python装饰器啊?我
本文实例讲述了Python装饰器原理与基本用法。分享给大家供大家参考,具体如下:装饰器:意义:在不能改变原函数的源代码,和在不改变整个项目中原函数的调用方式的情