functools.partial in python

  • functools定义
    Higher-order functions and operations on callable objects
    高阶函数和可调用对象上的操作

  • functools.partial 通俗讲就是固定某些参数,改变某些参数,然后返回一个新的函数。— “偏” 函数
    (简单记忆,对某些参数比较偏心)

  • 源码定义

# 其中 *args和**keywords是可变参数,不同点是,*args可以接受无名参数比如(1,2,3,4) 而**keywords接受键值对参数(有名字的参数),如v1=1, v2=2
def partial(func, /, *args, **keywords):
    def newfunc(*fargs, **fkeywords):
        newkeywords = {**keywords, **fkeywords}
        return func(*args, *fargs, **newkeywords)
    newfunc.func = func
    newfunc.args = args
    newfunc.keywords = keywords
    return newfunc
  • 举例子
from functools import *
# 普通函数
def add(a, b, c):
	return 100*a + 10*b + c
# 偏函数想要利用这个函数但是固定某些参数,只改变部分参数,然后返回一个新函数
# 此处固定c=2, b=1
add_part = partial(add, c = 2, b = 1)
# 5是无名参数 *args, 传给a
# 输出 5*100 + 10*1 + 2 = 512
print(add_part(add, 5))
  • 参考文献:
    https://docs.python.org/3/library/functools.html
    https://www.geeksforgeeks.org/partial-functions-python/
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值