【发布时间】:2020-08-29 19:56:03
【问题描述】:
我正在尝试构建一个函数
f(x, y, z)
x 和 y 都对结果没有任何影响。尽管如此,它们必须传递给函数,因为传递是由库完成的。我想:
- 使用 lambda 表达式解决此问题,并且
- 确保任何阅读我的代码的人都会立即知道 x 和 y 是多余的。
正如我所收集的,使用下划线字符作为来自多值返回函数的冗余返回值是常见的做法,例如
a, _, c, d, _, _ = return_six_things(),
但是,尝试
f = lambda _, _, z: some_operation(z)
崩溃,异常警告作者使用“重复参数”(两个下划线字符)。
还有其他选择吗?
附:为了避免 XY 问题,我想使用 lambdas 的原因是为了节省一些源代码字符。无论如何我都愿意使用它们,但声明“这些参数不会被使用”对我来说更重要。
【问题讨论】:
-
你是什么意思,
the passing is done by a library? -
我认为这对于 SO 来说是一个定义明确的问题,但可能会在代码审查中标记出来。在这里使用 lambda 来保存一些字符会为了简洁而牺牲清晰度 imo
-
@anon01 我有一个名为“apply_fn_to_some_objects(fn)”的库函数。我打算调用 'apply_fn_to_some_objects(lambda _, __, z: some_operation(z))'。
-
apply_fn_to_some_objects(my_fun, *my_fun_args, **my_fun_kwargs)不起作用? -
@anon01 我徒劳地试图表达我想要使用 lambda 而不是 需要 使用 lambda 的事实。无论“简洁”是什么,我都渴望它。单字表达是我经常沉迷于自己的一种乐趣。
标签: python lambda parameters notation