【发布时间】:2013-03-16 16:42:03
【问题描述】:
假设你想定义一个 partial 以任意顺序设置位置参数,即你想将 partial 应用到 str.split修复第二个和第三个参数。想要的结果是一样的:
lambda s: str.rsplit(s, SEP, 1) # SEP given.
(我使用str.rsplit(s... 而不是s.rsplit(... 以更清楚地说明这一点)。
使用 functools.partial 的一些近似值是:
partial(str.rsplit, sep=SEP, maxsplit=1) # SEP given
但是 str.rsplit 不使用关键字参数,只使用位置参数。
如何部分解决这些参数? lamda 和 wrappers 是唯一的选择吗?
如果你想内联定义函数,包装器是丑陋的,比如为一个函数的参数定义它。 Lambda 是这里的 defacto,而 partial 是另一种选择,但在这种情况下似乎缺乏。
【问题讨论】:
标签: python