Python的R的等价物。。。用于匹配函数参数

Python的R的等价物。。。用于匹配函数参数,python,function,Python,Function,在R中,您可以使用一个特殊参数。。。定义函数时,如下所述: 此参数将匹配任何不匹配的参数,并且可以轻松地传递给其他函数。如果您想收集参数来调用另一个函数,但又不想预先指定它们可能的名称,那么这很有用 这意味着,如果我编写的函数a使用其中的另一个函数b,我不需要将b的所有可能参数都包含为a的参数来使用它们 在Python中,有什么等价的东西吗?没有单一的构造,但我相信*和**参数的组合也是如此 def g(x, y, z): return x + y + z def f(x, *args

在R中,您可以使用一个特殊参数。。。定义函数时,如下所述:

此参数将匹配任何不匹配的参数,并且可以轻松地传递给其他函数。如果您想收集参数来调用另一个函数,但又不想预先指定它们可能的名称,那么这很有用

这意味着,如果我编写的函数a使用其中的另一个函数b,我不需要将b的所有可能参数都包含为a的参数来使用它们


在Python中,有什么等价的东西吗?

没有单一的构造,但我相信*和**参数的组合也是如此

def g(x, y, z):
    return x + y + z

def f(x, *args, **kwargs):
    print(x)
    print(args)
    print(kwargs)
    print(g(*args, **kwargs))

f(9, 1, 2, z=3)
产生

9
(1, 2)
{'z': 3}
6

作为输出。

这听起来像是你可以用**kwargs做的事情,尽管感觉有点邋遢。谢谢,这看起来很有用。我在探索*args/**kwargs,但没走多远。所以,如果你想通过关键字来调用它们,你可以使用**kwargs?是的。Python3允许您定义只包含关键字的参数,例如def fx、*、**kwargs,从而使这一点变得更容易。现在f只能用一个位置参数调用,用于其自身的位置参数x。不接受其他位置参数,因为没有使用*指定名称。任何附加参数都必须是关键字参数,它们都将被收集到kwargs中。