Python初学笔记之偏函数

1、Python中的偏函数和数学上的不一样。Python中的函数参数可以设定默认值,来降低函数调用的难度。举例说明:
int()函数可以把字符串转换成整数,当仅传入字符串时,int()函数默认按10进制进行转换:

int('123123')
# 123123

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

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

假设需要转换大量的二进制字符串,每次传入int(x,base=2)比较麻烦,于是我们就想到了自己写一个方法int2(),把base=2默认传进去:

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

这样我们就能直接使用int2()来转换二进制了

int2('10000000')
#64

下面就讲偏函数,functools.partial,就是帮助我们来创建一个偏函数的:

import functools
int2=functools.partial(int,base=2)
int2('1000000')
#64

#也可以传入base值
int2=functools.partial('1000000',base=10)
#1000000

其实创建偏函数时,实际上可以接受函数对象,*args,**kw这三个参数,当传入:

int2=functools.partial(int,base=2)

实际上固定了int的关键字参数base,也就是:

int2('1000000')

当传入:

max2=functools.partial(max,10)

实际上会把10作为*args的一部分自动加到左边,也就是

max2(5,6,7)
#相当于
args=(10,5,6,7)
max(*args)
#10

小结:当函数有多个参数,且某些参数是固定的,那么就可以用偏函数来简化他们了。如果你对Java有所了解,偏函数有点像Java中的方法重载

你可能感兴趣的:(Python初学笔记之偏函数)