functools
functools.MappingProxyType
functools.RLock
functools.WRAPPER_ASSIGNMENTS
functools.WRAPPER_UPDATES
functools.WeakKeyDictionary
functools.cmp_to_key
functools.get_cache_token
functools.lru_cache
functools.namedtuple
functools.partial *
functools.partialmethod
functools.reduce
functools.singledispatch
functools.total_ordering
functools.update_wrapper *
functools.wraps *
1.partial
提前绑定函数的可选参数,后期使用的时候也可以对这些参数进行重新设置, 可理解为默认参数;
# 从中可以看出,唯一要注意的是可选参数必须写出参数名
In [2]: import functools
In [3]: int2 = functools.partial(int, base=2)
In [4]: int2('10')
Out[4]: 2
2.update_wrapper
它可以把被封装函数的__name__、module、__doc__和 __dict__都复制到封装函数去
from functools import update_wrapper
def thisIsliving(fun):
def living(*args, **kw):
return fun(*args, **kw) + '活着就是吃嘛。'
return update_wrapper(living, fun)
@thisIsliving
def whatIsLiving():
"什么是活着"
return '对啊,怎样才算活着呢?'
print whatIsLiving()
print whatIsLiving.__doc__
对啊,怎样才算活着呢?活着就是吃嘛。
什么是活着
3.wraps
将update_wrapper进行了一次封装
def thisIsliving(fun):
@wraps(fun)
def living(*args, **kw):
return fun(*args, **kw) + '活着就是吃嘛。'
return living
@thisIsliving
def whatIsLiving():
"什么是活着"
return '对啊,怎样才算活着呢?'
print whatIsLiving()
print whatIsLiving.__doc__
对啊,怎样才算活着呢?活着就是吃嘛。
什么是活着
浙公网安备 33010602011771号