pyhon偏函数的使用

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

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) 

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

首先通过设置普通函数:

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

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

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

f

扫描二维码关注公众号,回复: 5603000 查看本文章

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

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

简单举例:通过偏函数实现两个数相加

普通函数:

# 建立一个简单函数实现两个数相加,
# 此时需要传入两个参数
def add(a,b):
    return a+b
ret = add(1,2)
print(ret)   # 3

插入偏函数

# 创建一个偏函数,固定其中一个参数的值,
# 这样只需要传入一个参数就可以实现相加
def add(a,b):
    return a+b
num= functools.partial(add,1)  # 相当于是给add函数传入1给a,确定a的值,再次传参时,只需要传一个参数即可,也就是把参数直接传给了b
print(num(2))   # 3

猜你喜欢

转载自blog.csdn.net/weixin_44239541/article/details/88626065