def out1(func1):   #7.func1=in2的内存地址,就是in2
print('out1')
def in1(): #8.调用函数index() 因为函数在in1里,所以首先运行in1,
print('in1')
res1 = func1() #9.运行到这因为func1=in2,此时就去调用in2了
print('in11') #17.in2调用结束,该层继续执行至结束,程序运行完毕
return res1
return in1
def out2(func2): #5.func2=in3的内存地址 其实就是in3
print('out2')
def in2(): #10.in1调用in2
print('in2')
res2=func2() #11.运行到这一步因为要运行func2(),但func2是in3,所以调用in3
print('in22') #16.in3调用结束,该层继续执行至结束
return res2
return in2
def out3(func3): #3.func3=index的内存地址,就是最原始的index
print('out3')
def in3(): #12.程序开始调用in3 开始运行
print('in3')
res3=func3() #2.func3=index 13.好了,到了我们的目标了此时开始运行index,接着往下
print('in33') #14.打印
return res3 #15.此时程序返回结束
return in3
@out1 #6.out1=out1(in2) out1同样装饰的就是in2了 并且运行结果为in1,所以此时index被传递给了in1
@out2 #4.out2=out2(in3) out2会向下面@out3也就就是in3要函数 此时in3被装饰,
# 返回结果为in2,此时index被传递给in2 改行代码运行结果其实就是函数in2
@out3 #1.out3=out3(index) out3运行结果返回值为in3,此时index被in3带走
##所以在函数的加载阶段就是自下至上
def index():#程序在13步运行完毕
print('叠加装饰器又怎么样?') #程序开始打印至结束 index()

有错误望各路大神指正谢谢!

python 叠加装饰器详解的更多相关文章

  1. python之装饰器详解

    这几天翻看python语法,看到装饰器这里着实卡了一阵,最初认为也就是个函数指针的用法,但仔细研究后发现,不止这么简单. 首先很多资料将装饰器定义为AOP的范畴,也就是Aspect Oriented ...

  2. python函数装饰器详解

    python装饰器(fuctional decorators)简单来说就是修改其他函数的函数. 这样的函数需要满足两个个条件: 1.不能修改原函数的源代码 2.不能改变原函数的调用方式 需要达到的效果 ...

  3. 【python】装饰器详解推荐

    复杂道理浅中来,见过的解释最清楚的一篇文章: https://blog.csdn.net/xiangxianghehe/article/details/77170585

  4. python设计模式之装饰器详解(三)

    python的装饰器使用是python语言一个非常重要的部分,装饰器是程序设计模式中装饰模式的具体化,python提供了特殊的语法糖可以非常方便的实现装饰模式. 系列文章 python设计模式之单例模 ...

  5. Python装饰器详解

    python中的装饰器是一个用得非常多的东西,我们可以把一些特定的方法.通用的方法写成一个个装饰器,这就为调用这些方法提供一个非常大的便利,如此提高我们代码的可读性以及简洁性,以及可扩展性. 在学习p ...

  6. Python中的各种装饰器详解

    Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...

  7. python装饰器1:函数装饰器详解

    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 先混个眼熟 谁可以作为装饰器(可以将谁编写成装饰器): 函数 方法 实现了__call__的可调用类 装饰器可以去装饰谁(谁可以被装饰): 函 ...

  8. Python—装饰器详解

    装饰器:(语法糖) 本质是函数,它是赋予函数新功能,但是不改变函数的源代码及调用方式   原则: 1.不能修改被装饰函数的源代码 2.不能修改被装饰函数的调用方式 3.函数的返回值也不变 这两点简而言 ...

  9. Python全栈开发之8、装饰器详解

    一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了.转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5486253.html 一.装饰器 装饰器可以使函数执 ...

随机推荐

  1. webview自总结

    2,webview ---- 运行时不调用系统自带浏览器: 1,安卓webview post传值问题: 11,WebView基本功能(html5.文件下载和远程URL) 10,webview--网络超 ...

  2. [UE4]蓝图函数库

    在任何蓝图上都可以调用“蓝图函数库”的方法

  3. SCCM 2012 R2实战系列之三:独立主站点部署

    3.1 SCCM 2012 R2主站点的安装 SCCM 2012 R2跟以前的SCCM 2007不同的是多了一个管理中心站点的角色, 管理中心站点主要负责SCCM管理控制和报表查看. 主站点跟以往的S ...

  4. AD中常用的命令

    1:查看客户机使用哪台DC进行登录的:在客户端cmd下运行 set命令可以查看使用哪台DC登录. 2:使用命令把客户端加入到域 netdom join  fs01 /domain:contoso.co ...

  5. 知识点:MySQL表名不区分大小写的设置方法

    在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大小写不一致造成的. mysql在windows系统下安装好后,默认是对表名大小写不 ...

  6. 01.String类字符串本质

    String类是在java开发过程中,使用最最频繁的一个类,不管是 用户名 密码 还是http报文接收过来的数据,其本质就是字符序列 所以做为一个java开发者,我们要重点掌握好String的方法使用 ...

  7. PHP微信公众号开发之自动回复

    先把源码类发出来 <?php /** 自己封装 微信 开发api */ header('Content-type: text/html; charset=utf-8');#设置头信息 class ...

  8. 03 Linux的目录结构与常见文件管理

    Linux目录结构 根文件系统rootfs用来实现整个文件的管理: 而Linux下的所有文件都需要通过根文件系统才能访问: FHS:Filesystem Hierarchy Standard文件层次化 ...

  9. MySQL安装,库的操作

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  10. Session原理

    详情移步:https://www.jianshu.com/p/2b7c10291aad