Python中functools模块的常用函数解析
发布时间:2020-12-16 20:33:05 所属栏目:Python 来源:网络整理
导读:1.partial 首先是partial函数,它可以重新绑定函数的可选参数,生成一个callable的partial对象: int('10') # 实际上等同于int('10',base=10)和int('10',10) 10 int('10',2) # 实际上是int('10',base=2)的缩写 2 from functools import partial int2 = parti
|
1.partial
>>> int('10') # 实际上等同于int('10',base=10)和int('10',10)
10
>>> int('10',2) # 实际上是int('10',base=2)的缩写
2
>>> from functools import partial
>>> int2 = partial(int,2) # 这里我没写base,结果就出错了
>>> int2('10')
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
TypeError: an integer is required
>>> int2 = partial(int,base=2) # 把base参数绑定在int2这个函数里
>>> int2('10') # 现在缺省参数base被设为2了
2
>>> int2('10',3) # 没加base,结果又出错了
Traceback (most recent call last):
File "<stdin>",in <module>
TypeError: keyword parameter 'base' was given by position and by name
>>> int2('10',base=3)
3
>>> type(int2)
<type 'functools.partial'>
从中可以看出,唯一要注意的是可选参数必须写出参数名。 2.update_wrapper #-*- coding: gbk -*- def thisIsliving(fun): def living(*args,**kw): return fun(*args,**kw) + '活着就是吃嘛。' return living @thisIsliving def whatIsLiving(): "什么是活着" return '对啊,怎样才算活着呢?' print whatIsLiving() print whatIsLiving.__doc__ print from functools import update_wrapper def thisIsliving(fun): def living(*args,**kw) + '活着就是吃嘛。' return update_wrapper(living,fun) @thisIsliving def whatIsLiving(): "什么是活着" return '对啊,怎样才算活着呢?' print whatIsLiving() print whatIsLiving.__doc__ 结果: 对啊,怎样才算活着呢?活着就是吃嘛。 None 对啊,怎样才算活着呢?活着就是吃嘛。 什么是活着 不过也没多大用处,毕竟只是少写了4行赋值语句而已。 3.wraps #-*- coding: gbk -*- from functools import wraps def thisIsliving(fun): @wraps(fun) def living(*args,**kw) + '活着就是吃嘛。' return living @thisIsliving def whatIsLiving(): "什么是活着" return '对啊,怎样才算活着呢?' print whatIsLiving() print whatIsLiving.__doc__ 结果还是一样的: 对啊,怎样才算活着呢?活着就是吃嘛。 什么是活着 4.total_ordering
from functools import total_ordering
@total_ordering
class Student(object):
def __init__(self,name):
self.name = name
def __eq__(self,other):
return self.name.lower() == other.name.lower()
def __lt__(self,other):
return self.name.lower() < other.name.lower()
a = Student('dan')
b = Student('mink')
print a > b
print a
print sorted([b,a])
打印结果 False <__main__.Student object at 0x7f16ecb194d0> [<__main__.Student object at 0x7f16ecb194d0>,<__main__.Student object at 0x7f16ecb195d0>] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
