Python functools模块学习总结

666次阅读  |  发布于5年以前

文档 地址

functools.partial

作用:

functools.partial 通过包装手法,允许我们 "重新定义" 函数签名

用一些默认参数包装一个可调用对象,返回结果是可调用对象,并且可以像原始对象一样对待

冻结部分函数位置函数或关键字参数,简化函数,更少更灵活的函数参数调用

复制代码 代码如下:

args/keywords 调用partial时参数

def partial(func, *args, keywords):
def newfunc(*fargs, *fkeywords):
newkeywords = keywords.copy()
newkeywords.update(fkeywords)
return func(
(args + fargs),
newkeywords) #合并,调用原始函数,此时用了partial的参数
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc

声明:

复制代码 代码如下:

urlunquote = functools.partial(urlunquote, encoding='latin1')

当调用 urlunquote(args, *kargs)

相当于 urlunquote(args, *kargs, encoding='latin1')

E.g:

复制代码 代码如下:

import functools

def add(a, b):
return a + b

add(4, 2)
6

plus3 = functools.partial(add, 3)
plus5 = functools.partial(add, 5)

plus3(4)
7
plus3(7)
10

plus5(10)
15

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8