python中偏函数的使用:即减少多参数函数的参数个数

多个参数使用时,会增加调用者的负担,那可以在不影响功能的情况下减少参数的个数吗?可以。

因为接下来我要用int(str, base)函数作例子进行讲解,所以事先介绍下int(str, base)函数。

int(str, base) : 字符串str的内容应该为base进制的形式。int函数计算过程:1、先将字符串转换为base进制;2、再将base进制转换为十进制。无论base是几,int函数最后输出的都是十进制。

比如我们经常使用的int函数,默认情况下,可以将字符串按十进制转换。如:

>>>int('123456')
123456

其实int函数里还有一个base参数,int(str, base), 但base参数默认为10。当把base=N时,int函数将str按N进制进行转换。

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

现在要将大量的字符串转换成二进制,于是要调用很多次int2(str, base = 2)

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

调用时:

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

将str按二进制进行转换时,除了利用以上方法外,还可以利用偏函数functools.partial()来创建一个新函数。偏函数的作用是在调用一个有参数的函数之前,事先将某些参数取默认值,这样在调用函数时就可以减少参数的个数。

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

partial()函数的第一个参数是需要减少参数、接下来被调用的函数名,接下来的partial参数是需要给默认值的函数的参数。不给出参数名称的时候,参数默认为由左至右的赋值。比如 int2 = functools.partial(int, 2)

总结:

这个知识点我在学习的时候,遇到的难点有:

1、不能理解 int(str, base) 函数的处理过程,一开始以为该函数是直接将str直接转换为base进制,输出的也是base进制。后来发现这样理解是不对的。

2、不能正确理解偏函数指的是什么,以为创建的新函数叫做偏函数,后来知道是partial()是偏函数。

  欢迎关注我的个人公众号~  接下来将从头开始持续更新python知识点。

                                                                                                ----------------一只开始慢慢飞的笨笨鸟

发布了84 篇原创文章 · 获赞 26 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/yjysunshine/article/details/105415318
今日推荐