当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。
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