偏函数

作者: 黑夜的眸 | 来源:发表于2018-08-06 21:36 被阅读0次

当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。

比如,int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:

>>> int('12345')
12345

但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做 N 进制的转换:

>>> int('12345', base=8)
5349
>>> int('12345', 16)
74565

假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:

def int2(x, base=2):
    return int(x, base)

这样,我们转换二进制就非常方便了:

>>> int2('1000000')
64
>>> int2('1010101')
85

functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:

>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1010101')
85

所以,functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。

我们在sorted这个高阶函数中传入自定义排序函数就可以实现忽略大小写排序。所以也可以用functools.partial把这个复杂调用变成一个简单的函数:

import functools

sorted_ignore_case = functools.partial(sorted,cmp=lambda x,y:cmp(x.lower(),y.lower()))

print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])

运行结果
['about', 'bob', 'Credit', 'Zoo']

相关文章

  • 笨笨的学pythonDay06

    接着昨天未学完的函数,还有个偏函数和装饰器,先说一下偏函数,装饰器没有看明白 1.偏函数 偏函数可以通过将函数参数...

  • 偏函数

    偏函数作用 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial func...

  • 偏函数

    当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。 比如,int()函数...

  • 偏函数

  • 偏函数

    偏函数用法是指创建一个调用另外一个部分—参数或变量已经预置的函数—的函数的用法。这句话相对较为拗口,下面我们以实例...

  • 偏函数

    偏函数: functools模块提供很多有用的功能,其中就有偏函数 tip:int()函数可提供额外的base参数...

  • 偏函数

  • 偏函数

    偏函数

  • 偏函数

    偏函数 什么是偏函数? 简单的理解偏函数,它是对原始函数的二次封装,是将现有函数的部分参数预先绑定为指定值,从而得...

  • 偏函数

    把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数

网友评论

      本文标题:偏函数

      本文链接:https://www.haomeiwen.com/subject/uwhnvftx.html