装饰器是python中独有的功能,能够在不改变原函数的情况下添加额外的功能。此方法在工程中还算常用,抽空总结下装饰器的使用方法。
1.简单装饰器
普通装饰器,装饰器无参数,函数无参数
当使用装饰器时,调用返回函数名的方法时,返回的时inner
def wapper(main):
def inner(*args,**kwargs):
print("add function")
main()
print("other function")
return inner
@wapper
def main():
print("hello word")
print(main.__name__)
'''
add function
hello word
inner
other function
'''
if __name__ == '__main__':
main()
2 含参装饰器
2.1 原函数含参
由于使用装饰器时函数名变为inner,所以原函数含参即为inner函数的参数.
def wapper(main):
def inner(para):
print("add function")
main(para)
print("other function")
return inner
@wapper
def main(para):
print(para)
print(main.__name__)
'''
add function
param
inner
other function
'''
if __name__ == '__main__':
main("param")
2.2 装饰器含参
当需要装饰器传入参数时,需要添加一层来接收参数
def get_param(p):
print(p,"use in external")
def wapper(main):
def inner(para):
print(p,"use in inside")
print("add function")
main(para)
print("other function")
return inner
return wapper
'''
decorate param use in external
decorate param use in inside
add function
param
inner
other function
'''
@get_param("decorate param")
def main(para):
print(para)
print(main.__name__)
if __name__ == '__main__':
main("param")