繁体   English   中英

functools.partial中的简化签名

[英]a simplified signature in functools.partial

在官方文档中解释functools 10.2。 functools-可调用对象上的高阶函数和操作-Python 3.7.0文档

partial()用于部分函数应用程序,该应用程序“冻结”函数的参数和/或关键字的某些部分,从而生成具有简化签名的新对象。 例如,partial()可用于创建行为类似于int()函数的可调用对象,其中基本参数默认为两个:

我可以理解大部分的声明,并承认“冻结”是描述上下文的精确而精确的词。

我无法理解的是“简化签名”,
它指的是哪种签名?

在这种情况下, 简化只是意味着更少的参数。 如果你有

import functools

def func(a, b, x=8, y=9):
    print((a, b, x, y))

simple_func = functools.partial(func, 1, x=2)

,然后simple_func结束一个函数,该函数具有一个参数a和一个关键字参数y

>>> simple_func(3, y=4)
(1, 3, 2, 4)

函数签名函数的名称,其参数以及严格地说是其返回类型:

mymodule.myfunction(foo, bar=None, *, baz=42)

这是签名 当您partial绑定一个函数时,它会返回一个新函数,通常带有较少的参数,因为您已经绑定了一些参数:

partial(mymodule.myfunction, bar='Mike')

这个新的部分绑定的函数的签名是:

func(foo, *, baz=42)

比原始签名更简单的签名。

签名表示函数的调用方式,如果您有一个需要五个字符串的函数,则其签名为

foo (st1, st2, st3, st4, st5)

如果现在使用partial冻结其中三个,则只需两个

foo (st1, st2)

之所以“简化”是因为它需要较少的参数。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM