在C扩展中返回多个输出?

时间:2017-12-04 15:44:28

标签: python c python-3.x cpython

Python允许使用逗号作为分隔值返回多个结果。

在开发用C语言编写的CPython扩展时,是否可以获得相同的结果?怎么样?

我正在开发一个CPython扩展,它替换现有的Python代码来对性能进行一些测试,我更愿意使用相同的接口来改变现有的代码库。

我正在使用Python 3.6。

1 个答案:

答案 0 :(得分:4)

是的,您可以使用PyTuple_New创建一个元组,填充并返回它。被调用者可以像往常一样解压缩结果。

Python使用容器返回多个值。返回一个解压缩的单个对象。逗号分隔意味着元组;另一方面,在方括号中创建一个列表。有关详情,请参阅How does Python return multiple values from a function

如果您想了解如何在C中执行此操作的示例,您可以查看the implementation of str.partitionarray.buffer_info(或任何返回内置方法的元组)。

相关问题