functools.partial
int2=functools.partial(int,base=2)
print(int2('10'))
>>>
2
未使用functools,函数被装饰后,文档字符丢失
def wrap(fn):
def wraped(*args,**kw):
print('wraped')
return fn(*args,**kw)
return wraped
@wrap
def func():
""" doc """
print("real func")
func()
print(func.__doc__)
>>>
wraped
real func
None
>>>
用functools.update_wrappre保存了原函数的一些属性
def wrap(fn):
def wraped(*args,**kw):
print('wraped')
return fn(*args,**kw)
return functools.update_wrapper(wraped,fn)
@wrap
def func():
""" doc """
print("real func")
func()
print(func.__doc__)
>>>
wraped
real func
doc
>>>
用functools.wrap作用同上
def wrap(fn):
@functools.wraps(fn)
def wraped(*args,**kw):
print('wraped')
return fn(*args,**kw)
return wraped
@wrap
def func():
""" doc """
print("real func")
func()
print(func.__doc__)
>>>
wraped
real func
doc
>>>