gpt4 book ai didi

Python C API 在不构建元组的情况下返回多个值/对象

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:38 24 4
gpt4 key购买 nike

我遇到了以下问题。我已经编写了一个 C-Extension to Python(2.7/3.2) 来连接一个自写的软件库。不幸的是,我需要从最后一个可选的函数返回两个值。在 Python 中我尝试过

def func(x,y): 
return x+y, x-y

test = func(13,4)

但是 test 是一个元组。如果我写

test1,test2 = func(13,4)    

我将两个值分开了。是否有可能在不拆包元组的情况下仅返回一个值,即第二个(,..第三,..第四)值被忽略?

如果存在这样的解决方案,它如何寻找 C-API?因为

return Py_BuildValue("ii",x+y,x-y); 

也会产生一个元组。

最佳答案

这个问题对C API 没有什么特别的;这和 Python 端的行为一致。

从函数返回的元组可以

  • 解包,如果它的长度是常量:a, _ = f()
  • 在 3.x 中,被解包,即使它的长度不是常量:a, *_ = f()
  • 被迭代,但这在这里没有用
  • 被索引:a = f()[0]

关于Python C API 在不构建元组的情况下返回多个值/对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com