gpt4 book ai didi

python - 如何在python中用部分填充特定的位置参数?

转载 作者:IT老高 更新时间:2023-10-28 21:40:18 27 4
gpt4 key购买 nike

基本上,我想做的是:

>>> from functools import partial
>>> partial(str.startswith, prefix='a')('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: startswith() takes no keyword arguments

但更普遍的问题是,如何用 partial 填充特定的位置参数。

附:我确实意识到我可以使用 lambda 代替。

最佳答案

这是不可能的。你必须做一个包装函数。

表面上,您会使用关键字参数,就像您尝试做的那样 - 这就是它们的用途,对吧?不幸的是,正如您所发现的,python 的标准库函数 do not take named parameters .因此,在当前实现 partial 的情况下,不可能不让另一个函数运行干扰。

根据PEP 309的接受,接受包含的是“partial() 类型构造函数绑定(bind) leftmost 位置参数和任何关键字。”此外,它指出:

Note that when the object is called as though it were a function, positional arguments are appended to those provided to the constructor, and keyword arguments override and augment those provided to the constructor.

Positional arguments, keyword arguments or both can be supplied at when creating the object and when calling it.

因为附加了额外的位置参数,所以没有办法提供一些前面的位置参数(通过这个实现)。

但是,它继续:

Partially applying arguments from the right, or inserting arguments at arbitrary positions creates its own problems, but pending discovery of a good implementation and non-confusing semantics, I don't think it should be ruled out.

所以,它显然可以摆在桌面上,但就目前而言,它并没有以这种方式实现。

为了披露,上面引号中的重点是我自己的。

关于python - 如何在python中用部分填充特定的位置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com