Python 3.5(装饰器)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 3.5(装饰器)相关的知识,希望对你有一定的参考价值。
装饰器
简单总结
装饰器的本质:一个闭包函数
装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展
简单装饰器的实现
def login(func):#等同于login(vv),ff=name def inner(x): print("装饰器的简单实现") func(x) #此时ff等于vv return inner @login #等同于login(vv) def vv(name): print("实现装饰器:%s"%name) #vv => login(vv) => inner 执行login函数,并将 @login 下面的 函数 作为vv函数的参数,即:@login 等价于 login(vv) vv(‘ss‘) #inner(‘ss‘)
装饰器带参数的函数 (摘自:http://www.cnblogs.com/Eva-J/articles/7194277.html#_label2)
def timer(func): def inner(a): start = time.time() func(a) print(time.time() - start) return inner @timer def func1(a): print(a) func1(1) 装饰器——带参数的装饰器
装饰器带参数的多个函数
import time def timer(func): def inner(*args,**kwargs): start = time.time() re = func(*args,**kwargs) print(time.time() - start) return re return inner @timer #==> func1 = timer(func1) def func1(a,b): print(‘in func1‘) @timer #==> func2 = timer(func2) def func2(a): print(‘in func2 and get a:%s‘%(a)) return ‘fun2 over‘ func1(‘aaaaaa‘,‘bbbbbb‘) print(func2(‘aaaaaa‘))
可以装饰具有处理n个参数的函数的装饰器
def w1(func): def inner(*args,**kwargs): # 验证1 # 验证2 # 验证3 return func(*args,**kwargs) return inner @w1 def f1(arg1,arg2,arg3): print ‘f1‘
一个函数可以被多个装饰器装饰吗?
def w1(func): def inner(*args,**kwargs): # 验证1 # 验证2 # 验证3 return func(*args,**kwargs) return inner def w2(func): def inner(*args,**kwargs): # 验证1 # 验证2 # 验证3 return func(*args,**kwargs) return inner @w1 @w2 def f1(arg1,arg2,arg3): print ‘f1‘
以上是关于Python 3.5(装饰器)的主要内容,如果未能解决你的问题,请参考以下文章