Python学习札记(二十七) 函数式编程8 偏函数

偏函数

NOTE

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

#!/usr/bin/env python3

import functools

def main():
	print(int(input(), base=2))
	print(int(input(), base=16))

if __name__ == '__main__':
	main()
sh-3.2# ./partial1.py 
10
2
20
32

可以看到,后面的base指明了输入的进制,并将其转换为10进制。

如果要转换大量的二进制数,就很麻烦,一般使用函数封装起来,调用就可以了:

def int2(a, b):
	return int(a, b)
10
2

2.functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

eg.固定二进制:

    int_2 = functools.partial(int, base=2) # int函数, 固定参数base=2

    print(int_2('10001'))
    print(int_2('100'))
sh-3.2# ./partial1.py 
17
4

传入两个参数,一个参数指向函数,另外一个参数(本质上是一个字典)指明固定的形参;函数结束之后返回固定特定形参的新函数。

相当于

kw = { 'base': 2 }
int(input(), **kw)

如果是max这样的函数的话,加入一个参数相当于:

	max_2 = functools.partial(max, 10)
	print(max_2(5, 6, 7))
10

所以,当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

2017/2/20

posted @ 2017-02-20 22:19  Wasdns  阅读(201)  评论(0编辑  收藏  举报