博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记之函数装饰器
阅读量:4644 次
发布时间:2019-06-09

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

# def timmer(f):    #装饰器函数 #     def inner(): #         start = time.time() #         ret = f()       #被装饰的函数 #         end = time.time() #         print(end - start) #         return ret #     return inner # # @timmer         #语法糖 @装饰器函数名 # def func():     #被装饰的函数 #     time.sleep(0.01) #     print('老板好同事好大家好') #     return '新年好' # # func = timmer(func) # ret = func()   #inner() # print(ret) # 装饰器的作用 —— 不想修改函数的调用方式 但是还想在原来的函数前后添加功能 # timmer就是一个装饰器函数,只是对一个函数 有一些装饰作用 # 原则: 开放封闭原则 #   开放 : 对扩展是开放的 #   封闭 : 对修改是封闭的 # 封版 # def outer(): #     def inner(): #         return 'inner' #     inner() # # outer() #装饰带参数函数的装饰器 # def timmer(f):    #装饰器函数 #     def inner(*args,**kwargs): #         #(1,2) /(1) #         start = time.time() #         ret = f(*args,**kwargs)  #f(1,2)       #被装饰的函数 #         end = time.time() #         print(end - start) #         return ret #     return inner # # @timmer         #语法糖 @装饰器函数名 # def func(a,b):     #被装饰的函数 #     time.sleep(0.01) #     print('老板好同事好大家好',a,b) #     return '新年好' # # @timmer         #语法糖 @装饰器函数名 # def func1(a):     #被装饰的函数 #     time.sleep(0.01) #     print('老板好同事好大家好',a) #     return '新年好' # # func = timmer(func) # ret = func(1,2)   #inner() # ret = func(1,b = 2)   #inner() # print(ret) # def wrapper(f):    #装饰器函数,f是被装饰的函数 #     def inner(*args,**kwargs): #         '''在被装饰函数之前要做的事''' #         ret = f(*args,**kwargs)    #被装饰的函数 #         '''在被装饰函数之后要做的事''' #         return ret #     return inner # # @wrapper         #语法糖 @装饰器函数名 # def func(a,b):     #被装饰的函数 #     time.sleep(0.01) #     print('老板好同事好大家好',a,b) #     return '新年好' # def wrapper(): #     def inner(): #         pass #     return inner def wrapper(func):   #qqxing     def inner(*args,**kwargs):         ret = func(*args,**kwargs)   #被装饰的函数         return ret     return inner @wrapper        #qqxing = wrapper(qqxing) def qqxing():     print(123) ret = qqxing()   #inner

转载于:https://www.cnblogs.com/CoolClare/p/10880724.html

你可能感兴趣的文章
BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
查看>>
ubuntu 重启命令,ubuntu 重启网卡方法
查看>>
Linux的学习:
查看>>
JavaScript中的原型继承原理
查看>>
Python logger模块
查看>>
jquery控制css的display(控制元素的显示与隐藏)
查看>>
关于python做人工智能的一个网页(很牛逼)
查看>>
判断控件的CGRect是否重合,获取控件的最大XY值
查看>>
POJ-1128 Frame Stacking
查看>>
浏览器调试淘宝首页看到有趣的招聘信息
查看>>
ASP.NET Identity “角色-权限”管理 4
查看>>
[转][译]ASP.NET MVC 4 移动特性
查看>>
SOC CPU
查看>>
get_result --perl
查看>>
163镜像地址
查看>>
ehcache memcache redis 三大缓存男高音
查看>>
eclipse 快捷键Open Implementation 直接退出
查看>>
minix中管道文件和设备文件的读写
查看>>
JAXB - Annotations, Annotations for Enums: XmlEnum, XmlEnumValue
查看>>
context 插图
查看>>