【发布时间】:2021-07-20 19:53:35
【问题描述】:
在 Python 中编写一个函数以返回与它在运行时收到的完全相同的参数的正确方法是什么?
例如:
def pass_thru(*args, **kwargs):
# do something non-destructive with *args & **kwargs
return ??? <- somehow return *args & **kwargs
【问题讨论】:
-
返回 args, kwargs ?
-
显示示例输入和预期输出
-
关键字参数不是一流的值,因此您无法确切地获得您传递的内容。
return *args, kwargs可能是你能得到的最接近的。 (这是一个单元组,其第一个n元素是n位置参数,最后一个元素是由累积的关键字参数构造的dict。) -
你做不到的。您可以编写
pass_thru(*pass_thru(...))以便外部调用获得相同的位置参数,但任何关键字参数都将作为单个dict接收,而不是键/值对的解压缩dict。 -
函数组合对于 Python 函数没有明确定义。从数学上讲,所有函数都接受一个参数并返回一个值。 Python 函数不是数学函数。我曾经试图列举你可能尝试定义 Python 函数组合的所有方式;我想有5个。例如,如果
g返回一个元组,您希望组合是lambda x: f(g(x))还是lambda x: f(*g(x))?可能是任何一个,这取决于f的期望。
标签: python return variadic-functions