知行编程网知行编程网  2023-01-11 21:00 知行编程网 隐藏边栏  2 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python偏函数是什么?怎么用?的相关知识,希望可以帮到处于编程学习途中的小伙伴

部分功能?相信很多朋友看到这个内容都会一头雾水。想想他们学的东西,关于偏函数的好像很少。我们如何理解这些不常见的内容?小编帮你整理了部分功能的所有亮点,具体内容如下~




偏函数 partial 应用


执行函数时,必须使用所有必要的参数调用它。但是,有时可以在调用函数之前提前知道参数。在这种情况下,一个函数有一个或多个预先可用的参数,以便可以用更少的参数调用该函数。



偏函数是将所要承载的函数作为

partial()函数的第一个参数,原函数的各个参数依次作为partial()函数后续的参数,除非使用关键字参数。




举一个常见的例子来说明:




我们实现了一个取余函数,对于整数

100,取得对于不同数 m 的 100%m 的余数。

from functools import partial
 
def mod( n, m ):
  return n % m
 
mod_by_100 = partial( mod, 100 )
 
print mod( 100, 7 )  # 2
print mod_by_100( 7 )  # 2

让我们看另一个例子,如何执行不同的基础转换。

from functools import partial
 
bin2dec = partial( int, base=2 )
print bin2dec( '0b10001' )  # 17
print bin2dec( '10001' )  # 17
 
hex2dec = partial( int, base=16 )
print hex2dec( '0x67' )  # 103
print hex2dec( '67' )  # 103




关于偏函数,可以对现有函数进行加强。


>>> import functools
>>> int2 =functools.partial (int, base=2) # 把 int 的转换设为二进制了,这里 base 是 int 函数表示进制的参数。
>>>int2('1000000')
64
 
>>>int2('1010101')
85




在重设之后

, 也可以在函数调用时传入其他值:

>>> int2('1000000', base=10)  # 这里 base 变成了 10,覆盖了已设的默认值 2。
1000000



注意,新建偏函数后,已经设置的默认值仍然可以更改,但必须明确指出已更改

base 的值。




否则如果直接传如一个数值会报错

:

int2('100', 10)  # 报错,10 前未加 base=,不能分辨这是传给 base 的




原因如下

:



创建偏函数时,实际上可以接收函数对象、

*args 和 **kw 这 3 个参数,当传入:

int2 =functools.partial(int, base=2)  # int 是函数对象,base=2 是 **kw,没有传入 *args 参数



实际上固定了

int() 函数的关键字参数 base,也就是:

int2('10010')




相当于:


kw = { 'base': 2 }
int('10010', **kw)  # 如果不指明 base=2 而只是传入 2 的话,那么 2 被认为是 *args 的值




当传入:


max2 =functools.partial(max, 10)  # 这里的 10 显然就是作为 *args 里的值传入的



实际上会把

10 作为 *args 的一部分自动加到参数列表里去,也就是:

max2(5,6, 7)  # 原本有 *args 的列表,然后会把 10 再加进去




相当于:


args = (10, 5, 6, 7)
max(*args)

结果为10。


以上就是关于python的偏函数的用法,


如需了解更多python实用知识,点击进入

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享