0

我遇到了以下问题。我已经为 Python(2.7 / 3.2)编写了一个 C 扩展来连接一个自写的软件库。不幸的是,我需要从函数返回两个值,其中最后一个是可选的。在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); 

也会产生一个元组。

4

1 回答 1

2

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

从函数返回的元组可以

  • 被解包,如果它的长度是恒定的:a, _ = f()
  • 在 3.x 中,被解包,即使它的长度不是恒定的:a, *_ = f()
  • 被迭代,但这在这里没有用
  • 被索引:a = f()[0]
于 2013-11-05T14:55:54.833 回答