美文网首页
Python的参数说明 偏函数

Python的参数说明 偏函数

作者: 阿莫米德 | 来源:发表于2017-04-10 11:22 被阅读0次

看到网上的例子:

def foo(*args,**kwargs):
    print('args = ',args)
    print('kwargs = ',kargs)
    print('-----------------------')

foo('a',1,None,a = 1,b = '2',c = 3)

结果:

args =  ('a', 1, None)
kwargs =  {'a': 1, 'b': '2', 'c': 3}

也就是说,args接收的数据类型是单个的字符,*kwargs接收的数据类型是有名字有特指的,字典类型的。

可以以偏函数来理解参数类型

偏函数

引用自廖雪峰的官方网站

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。
在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:
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)

这样,我们转换二进制就非常方便了:

int2('1000000')
64

functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:

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

所以,简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
注意到上面的新的int2函数,仅仅是把base参数重新设定默认值为2,但也可以在函数调用时传入其他值:

int2('1000000', base=10)
1000000

最后,创建偏函数时,实际上可以接收函数对象、args和*kw这3个参数,当传入:
int2 = functools.partial(int, base=2)
实际上固定了int()函数的关键字参数base,也就是:
int2('10010')
相当于:

kw = { 'base': 2 }
int('10010', **kw)

当传入:

max2 = functools.partial(max, 10)

实际上会把10作为*args的一部分自动加到左边,也就是:
max2(5, 6, 7)
相当于:

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

结果为10。

相关文章

  • Python的参数说明 偏函数

    看到网上的例子: 结果: 也就是说,args接收的数据类型是单个的字符,*kwargs接收的数据类型是有名字有特指...

  • Python初学笔记之偏函数

    1、Python中的偏函数和数学上的不一样。Python中的函数参数可以设定默认值,来降低函数调用的难度。举例说明...

  • 2018-05-14 python偏函数functools.pa

    偏函数的定义 简单来说:偏函数就是将某个已有参数给固定住,返回固定参数后的函数 举例: 比如python的int强...

  • 函数的参数

    廖雪峰Python教程 一、必选参数 二 、默认参数 函数定义 参数类型说明 name, 必选参数gende...

  • Python进阶-函数默认参数

    写在前面 如非特别说明,下文均基于Python3 Python进阶-函数默认参数 一、默认参数 python为了简...

  • Python异步

    Python异步之asyncio 一、偏函数 如果需要减少某个函数的参数个数,可以使用 functools.par...

  • Python基础(十一): 函数的几种使用方式

    偏函数, 高阶函数, 返回函数, 匿名函数, 闭包 偏函数 当我们写一个参数比较多的函数时, 如果有些参数, 大部...

  • python 偏函数

    python偏函数的概念是:使用functools.partical将原函数及默认值作为参数传入,然后得到一个新的...

  • Python进阶话题杂谈(七)偏函数

    偏函数在Python中很少被用到,故其并不是一个很重要的语法,本文仅对偏函数做简要讨论。 对于一个含有多个参数的函...

  • python基础-07-函数

    python基础-函数 1.函数的定义 例子: 2.python中函数的参数详解 必备参数demo: 默认参数de...

网友评论

      本文标题:Python的参数说明 偏函数

      本文链接:https://www.haomeiwen.com/subject/cblsattx.html