PyArg_ParseTupleAndKeywords如何工作?


问题内容

我一直在尝试学习如何为Python编写C扩展,并希望确保我了解PyArg_ParseTupleAndKeywords的工作方式。

我相信第一个参数是PyObject指针,它指向按参数传递顺序传递给C-
extension函数的参数数组。第二个参数是已传递的关键字的列表,它们传递的位置以及很可能的某种指示标记,用于指示关键字从何处开始和位置变得无关紧要。

然后PyArg_ParseTupleAndKeywords使用其关键字列表(第4个参数)在用关键字指定的参数与格式字符串(第3个参数)和C变量的地址(第5个+
+参数)之间映射,适当的值应复制到该值。

我的理解正确吗?当我阅读在线文档时,所看到的只是对“位置参数和关键字参数”的引用,这让我感到有些茫然。处理PyArg_ParseTupleAndKeywords的Python解释器的文件在哪里?


问题答案:

您是否已阅读http://docs.python.org/c-api/arg.html上的开篇说明?它很好地解释了正在发生的事情。不要直接去参考具体参考PyArg_ParseTupleAndKeywords;
它假定您已阅读上面的文字,并且其本身并不是很有帮助。

不过,您几乎已经掌握了。第一个参数确实是传入的位置参数的列表。第二个是传入的关键字参数的映射(将给定的关键字名称映射到给定的值)。第四个参数实际上是函数准备接受的关键字列表。是的,第3个参数是格式字符串,第5个及以后的参数是将值复制到的C指针。

您会在PyArg_ParseTupleAndKeywords()下方找到Python/getargs.c