Python允许使用逗号作为分隔值返回多个结果。
在开发用C语言编写的CPython扩展时,是否可以获得相同的结果?怎么样?
我正在开发一个CPython扩展,它替换现有的Python代码来对性能进行一些测试,我更愿意使用相同的接口来改变现有的代码库。
我正在使用Python 3.6。
答案 0 :(得分:4)
是的,您可以使用PyTuple_New
创建一个元组,填充并返回它。被调用者可以像往常一样解压缩结果。
Python使用容器返回多个值。返回一个解压缩的单个对象。逗号分隔意味着元组;另一方面,在方括号中创建一个列表。有关详情,请参阅How does Python return multiple values from a function。
如果您想了解如何在C
中执行此操作的示例,您可以查看the implementation of str.partition
或array.buffer_info
(或任何返回内置方法的元组)。