博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3装饰器解析
阅读量:6991 次
发布时间:2019-06-27

本文共 824 字,大约阅读时间需要 2 分钟。

实现装饰器知识储备: 1.函数即"变量"  (白话:函数实参 当作另一个函数的形参) 2.高阶函数     a:把一个函数名当作实参传给另一个函数(             在不修改被装饰函数源代码的情况下为其添加功能)     b:返回值中包涵函数名(说白了,此函数名是嵌套函数名)(不修改函数的调用方式) 3.嵌套函数 《高阶函数+嵌套函数》=装饰器 》》》代码详解
import timedef bar():    time.sleep(3)    print("I am bar")def deco(fun):    def test1():#呵呵 debug这步 没什么卵用,就是声明了一个函数,没调用。其实此刻它就是地址即变量,切记,别想着到到这步的执行过程,切记,只是申明。        start_time=time.time()        fun()        end_time=time.time()        print("用时:%s"%(end_time-start_time))    return  test1# 这一步关键,上面两个函数都在申明,没有调用,没卵用,#此时bar是接受 deco(bar)的返回值 test1,test1是个地址即变量,加上括号,就是调用,#变量可以赋值,赋值给bar的 加上括号 就是调用。test()=bar()bar=deco(bar)bar() #-->实际这是在调用tes1()'''综上 以后在装饰器 满足原则的条件下,实际在运行嵌套函数,由高级函数的返回值加括号运行,即把嵌套函数的函数名作为高级函数的返回值,返回值()=嵌套函数名(),又因返回值是个变量,变量可以赋值,赋值给被装饰函数名()其满足装饰器其二原则,不改变被装饰函数的调用方式'''

  

 

转载于:https://www.cnblogs.com/gbconcon/p/10922719.html

你可能感兴趣的文章
如何在微信公众号下载保存图片??
查看>>
Spring读书笔记——bean解析
查看>>
算法练习(5)数字列表中 连续最大的和
查看>>
C# 导出 不保存 直接显示
查看>>
bzoj4445&&dtoj#2348. 小凸想跑步(convex)
查看>>
常见模块设计--权限管理(一)
查看>>
[Docker]容器镜像
查看>>
stl学习之模板
查看>>
元学习 - Learning How to Learn - 第一课:集中与发散思维
查看>>
一种具有细节保留功能的磨皮算法。
查看>>
排序算法7--选择排序--堆排序
查看>>
iOS开发规范&建议
查看>>
[原]如何为SqlServer2008数据库分配用户
查看>>
【leetcode】Basic Calculator III
查看>>
回归到jquery
查看>>
Visual Studio 2008常见问题
查看>>
【洛谷 P4254】 [JSOI2008]Blue Mary开公司(李超线段树)
查看>>
scrapy初体验 - 安装遇到的坑及第一个范例
查看>>
OC内存管理
查看>>
C#中Split用法
查看>>