python基础学习-装饰器基本原理
Posted python学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础学习-装饰器基本原理相关的知识,希望对你有一定的参考价值。
#__author:"Feng Lin" #date: 2018/8/29 #装饰器:在不修改函数的调用方式,但是还是想在原来的函数前后添加功能 #如下:timer 就是一个装饰器函数,支队一个函数有一些装饰作用 #使用闭包是实现装饰器的基本原理 import time # def func(): # time.sleep(0.01) # print("哈哈嘿嘿") # def timer(func): #装饰函数 # def inner(): # start=time.time() # func() #被装饰函数 # end=time.time() # print(end-start) # return inner # func=timer(func) # func() #装饰带参数的装饰器 # def timer(func): #装饰函数 # def inner(x): # start=time.time() # func(x) #被装饰函数 # end=time.time() # print(end-start) # return inner # @timer #语法糖 @timer与func=timer(func)等价 # def func(x): # time.sleep(0.01) # print("哈哈嘿嘿",x) # func(1) #装饰带参数和返回值一个值的装饰器 # def timer(func): #装饰函数 # def inner(x): # start=time.time() # ret=func(x) #被装饰函数 # end=time.time() # print(end-start) # return ret # return inner # @timer # def func(x): # time.sleep(0.01) # print("哈哈嘿嘿") # return x # print(func(1)) # #装饰带参数和返回多个值的装饰器 # # def timer(func): #装饰函数 # def inner(*args): # start=time.time() # ret=func(*args) #被装饰函数 # end=time.time() # print(end-start) # return ret # return inner # @timer # def func(x): # time.sleep(0.01) # print("哈哈嘿嘿") # return x # print(func([1,2])) #装饰带参数和返回任意类型的返回值的装饰器 # def timer(func): #装饰函数 # def inner(*args,**kwargs): # start=time.time() # ret=func(*args,**kwargs) #被装饰函数 # end=time.time() # print(end-start) # return ret # return inner # @timer # def func(x,y): # time.sleep(0.01) # print("哈哈嘿嘿") # return x,y # print(func([1,2],y=1)) #总结,万能装饰器定式 def wrapper(f): #装饰器函数,f是被装饰的函数 def inner(*args,**kwargs): ‘‘‘在被装饰函数之前要做的操作‘‘‘ ret=f(*args,**kwargs) ‘‘‘在被装饰函数之后要做的操作‘‘‘ return ret return inner
以上是关于python基础学习-装饰器基本原理的主要内容,如果未能解决你的问题,请参考以下文章