python - 仔细检查 Python 中的任意关键字参数
问题描述
我对 Python 很陌生,我正在研究一个用 Python 编写的开源框架。我正在尝试更深入地研究源代码。我不明白为什么这行代码需要“任意参数”和“任意关键字参数” :
observerCallback = lambda *args, **kwargs: self.pushRender(realViewId)
基本上是因为,最后,它们没有在“被调用”方法中使用:
def pushRender(self, vId, ignoreAnimation = False):
...
那么,再一次:在这里使用 *args 和 **kwargs 的目的是什么?我知道这可能看起来像一个愚蠢的问题,但我现在才知道这个“特殊运算符”的含义,在花了几天时间探索这个源代码之后,我的大脑几乎失去了工作。如果有人可以帮助我更好地理解一点,我当然真的很感激。
解决方案
的调用者可能observerCallback
正在向函数传递一些参数,因此函数需要接受它们。否则会发生这种情况:
>>> 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
简单地选择忽略/不使用任何传递的参数。按照惯例,您应该使用_
而不是“ args
”和“ kwargs
”作为您将忽略这些参数的指示符:
lambda *_, **__: ...
推荐阅读
- unity3d - dontDestroyOnLoad 在不同场景中的问题
- python - 如果字母和数字正确,我如何打印更多的 dict 网格?
- firebase - FLUTTER:如何在流构建器中使用导航器?
- r - 如何从R字符串中提取某些单词?
- reactjs - 尝试将响应数组映射到状态对象时出现未处理的拒绝错误
- java - Vs Code java The import cannot be resolved
- netlogo - 如何让乌龟移动到最近的具有相同类别的补丁?
- html - 如何在 inline-block-div 中垂直和水平居中内容?
- python - 制作一个函数来改变一个变量
- android - 是否可以在未经授权的设备上使用 adb?