Python进阶之偏函数
来源:互联网 发布:淘宝助理上传宝贝 编辑:程序博客网 时间:2024/05/17 08:41
偏函数
本文整理自慕课网廖学峰老师的python视频教程
当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。
比如,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可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。
practice
在 python进阶之自定义排序中我们在sorted这个高阶函数中传入自定义排序函数就可以实现忽略大小写排序。请用functools.partial把这个复杂调用变成一个简单的函数:
sorted_ignore_case(iterable)
解答
要固定sorted()的cmp参数,需要传入一个排序函数作为cmp的默认值。
from filecmp import cmpimport functools# sorted_ignore_case = functools.partial(sorted, cmp=lambda s1, s2: cmp(s1.upper(), s2.upper())) python2 的写法sorted_ignore_case = functools.partial(sorted, key=lambda a:a.upper())print (sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit']))
0 0
- Python进阶之偏函数
- Python进阶之返回函数
- Python进阶之匿名函数
- python进阶之format函数
- 一、Python 进阶 之 函数式编程
- Python进阶之函数式编程
- python 进阶之属性函数property
- python进阶8:偏函数functools.partial
- python进阶--内置函数
- python进阶教程之函数参数的多种传递方法
- <Python进阶读书笔记>之(一) 函数不定参数传递
- Python进阶(三)-函数式编程之reduce()
- Python函数式编程之map/reduce/filter进阶
- Python内置函数进阶之“属性(property())”详解
- Python3之函数进阶
- JavaScript进阶之函数
- Python进阶07 函数对象
- Python进阶07 函数对象
- 面向对象_封装
- 机试算法讲解:第47题 递推之N阶楼梯如何上楼
- TCP/IP学习笔记(一) .
- 修改linux主机名
- C语言深度解剖——读书笔记-2、关键字
- Python进阶之偏函数
- 网络的可靠性
- 鸟哥私房菜学习笔记八 管线命令(Pipe)
- 机试算法讲解: 第48题 递推之写信发错啦
- 黑马程序员—— 反射总结
- linux_c开发(5-2)进程间通讯_管道通讯
- 分治法和指针求最大最小数
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(一)
- 基于kvo的观察者模式