装饰器
一、装饰器就是闭包,将函数当做实参返回。作用:1.不改变被装饰函数代码、调用方式。
2.给被修饰函数添加新功能
def record(func):
def p():
print("Enter
{}".format(func.__name__))
func()
return p
@record #say_hello=record(say_hellow)
def say_hello():
print( "hello!")
@record #say_goodbye=record(say_goodbye)
def say_goodbye():
print("hello!") # bug here
if __name__ == '__main__':
say_hello()
say_goodbye()
二、同一函数被多个装饰器装饰。
调用步骤类似MRO列表
三、内嵌函数加参数ß----被修饰函数带有参数。*args,**kwargs
四、装饰器加参数
@record(“paraments”)相当于record(“paraments”)(say_hellow)
一般而言,调用一个函数是加一个括号。如果看见括号后还有一个括号,说明第一个函数返回了一个函数,如果后面还有括号,说明前面那个也返回了一个函数。
def record(paraments):
def a(func):
def b(*args,**kwargs):
c=func(*args,**kwargs)
return c
return b
return a
@record("dsfs") #d=record("dsfs")(d)->d=a(d)->d=b
#d()
def d(paraments):
pass
本文来自博客园,作者:Iving,转载请注明原文链接:https://www.cnblogs.com/SAS-T/p/9392907.html