装饰器
简而言之,就是用来在不修改原有的函数的情况下添加一些新的功能。
原函数
def test():
print("test")
修饰器
def decorator(func):
def wrapper(*args, **kw):
print("call {}".format(func.__name__))
return func(*args, **kw)
return wrapper
使用之
@decorator
def test():
print("test")
带参数的装饰器
def decorator(text):
def decorator2(func):
def wrapper(*args, **kw):
print("call {0},{1}".format(text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator2
@decorator("wow")
def test():
print("test")
修改属性
import functools
def decorator(text):
def decorator2(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print("call {0},{1}".format(text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator2
functools.partial
用来固定函数某些参数
int2 = functools.partial(int, base=2)