仔细检查 Python 中的任意关键字参数

Double check about Arbitrary Keyword Arguments in Python

我是 Python 的新手,我正在研究一个用 Python 编写的开源框架。我正在尝试更深入地研究源代码。我不明白为什么 this line of code 中需要“Arbitrary Arguments”和“Arbitrary Keyword Arguments”:

observerCallback = lambda *args, **kwargs: self.pushRender(realViewId)

基本上是因为,最后,它们没有在 "called" method:

中使用
def pushRender(self, vId, ignoreAnimation = False):
    ...

所以,再一次:在这里使用 *args 和 **kwargs 的目的是什么?我知道这可能看起来像一个愚蠢的问题,但我现在才知道这个“特殊运算符”的含义,在花了几天时间探索这个源代码之后,我的大脑几乎无法工作。如果有人能帮助我更好地理解一点,我当然非常感激。

observerCallbackcaller 可能正在向函数传递一些参数,因此函数需要接受它们。否则会发生这种情况:

>>> observerCallback = lambda: self.pushRender(realViewId)
>>> observerCallback('foo', bar='baz')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: <lambda>() got an unexpected keyword argument 'bar'

这个特定的 observerCallback 只是选择 ignore/not 使用任何传递的参数。按照惯例,您应该使用 _ 而不是 "args" 和 "kwargs" 作为您将忽略这些参数的指示符:

lambda *_, **__: ...