Python3 进阶篇——偏函数的使用

我们之前讲了lambda创建匿名函数,可以使我们的代码更加的简洁,那么我们接着来讲解一下什么是偏函数?偏函数有什么样的作用

接下来我们先来看一个栗子:

print('aaaaaaaaaa')
print('bbbbbbbbbb')
print('cccccccccc')

# 输出结果:
# aaaaaaaaaa
# bbbbbbbbbb
# cccccccccc

上面是我们经常会使用到的一个函数,print()可以打印我们想要输出的数据,我们会发现每一行它自动换行了;

这个之前我们也讲解过,在print()这个函数里有一个参数叫 end='\n',它的默认值就是换行,所以在我们每次输出完数据之后,他都会额外在输出一个 '\n' ,那我们要是不想让他自动换行该怎么办呢?

print('aaaaaaaaaa',end='')
print('bbbbbbbbbb',end='')
print('cccccccccc',end='')

# 输出结果:
# aaaaaaaaaabbbbbbbbbbcccccccccc

我们只需要手动修改默认参数就好了,但是这样岂不是很麻烦,如果我们要调用一百次不换行输出,那岂不是要写一百遍?

那么我们可以重新定义一个函数,在这个函数里面将默认值进行修改:

def print2(s,end=''):
    print(s,end=end)

print2('aaaaaaaaaa')
print2('bbbbbbbbbb')
print2('cccccccccc')

# 输出结果:
# aaaaaaaaaabbbbbbbbbbcccccccccc

这样好像就方便多了,其实我们还有一个更加简便的方法,就是偏函数,我们先来看一下具体怎么使用:

from functools import partial

print2 = partial(print,end='')

print2('aaaaaaaaaa')
print2('bbbbbbbbbb')
print2('cccccccccc')

# 输出结果:
# aaaaaaaaaabbbbbbbbbbcccccccccc

我们可以调用partial()定义偏函数,在偏函数中我们可以修改默认参数,或者将参数设置默认值;

partial(函数名,参数名=参数值[,参数名=参数值])

那么,我们再看一个例子,我们对int()都不陌生,我们先来简单看下他的函数定义:

我们发现这里面还有一个 base=10 这么个参数,它的作用就是说进行强制类型转换的数据是几进制的,我们来举个栗子:

print(int('111',base=16))
print(int('111',base=8))
print(int('111',base=2))

# 输出结果:
# 273
# 73
# 7

默认情况下就是十进制到十进制,如果我们需要从二进制到十进制就需要修改 base这个参数了,同样的道理,我们想要大面积使用就可以用partial()进行创建一个偏函数:

int2 = partial(int,base=2)

print(int2('111'))

# 输出结果:
# 7

当我们发现, 在函数的调用中,有某个参数经常为一个固定值时,我们也可以定义一个偏函数进行调用:

def sum_num(a,b,c,d):
    return a+b+c+d

sum_num2 = partial(sum_num,c=12)

print(sum_num(1,2,12,4))
print(sum_num2(1,2,d=4))

# 输出结果:
# 19
# 19

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值