Python学习笔记之偏函数

函数那一章我们知道,定义一个函数,如果一个参数大多数时候是一个固定值,但也不排除有特殊值,那么就可以设置默认值。举个例子,int() 函数可以将字符串转换成数字,并且按十进制的结果转换。例如:

# 字符串转换成数字
int('12345')
# 结果:12345

事实上,这个int() 函数有个额外的base参数,只不过该base参数设置为了默认值10,如果修改该参数,那么该函数就可以做N进值的转换。注意,是字符串为该base参数所设定的进制,然后转换成十进制的数字。

# N进值的转换
int('123', base=8)
int('111', base=2)
# 结果:83    7

现在如果有大量二进制的字符串像转换成十进制数字,这样每次调用都要传入 base 参数,非常麻烦。我们可以自定义一个函数,来实现这个方法:

# int2() 用于转换二进制字符串
def int2(x, base=2)
    return int(x, base)

那是不是我们如果想要实现上述类似的功能,就自定义一个函数呢?贴心的Python已经帮你解决了上述问题了,那就是偏函数。偏函数的功能就是设定参数的默认值,并返回一个新的函数,降低函数调用的难度。来看看如何使用偏函数实现上述功能的。

# 使用偏函数设定参数的默认值
import functools
# 第一个参数为函数名,第二个参数为参数默认值设置
int2 = functools.partial(int, base=2)
int2('111')
# 结果:7

创建偏函数时,实际上可以接收函数对象、*args和**kw这3个参数。如果填写了*args,那么就将该args中的数据插入到函数调用时传进的参数前边。

# 填写 *args 参数的结果
import functools

# 每次调用 max2() 时,都在其参数前添加10这一参数
max2 = functools.partial(nax, 10)
# 实际上就是 max2(10, 1, 3, 5)
print(max2(1, 3, 5))
# 结果:10

如果填写了**kw,就是设定函数中的默认参数,上述的 base=2 就是这个这个这个例子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值