0

次の問題が発生しました。私は自分で書いたソフトウェア ライブラリとのインターフェイスとして Python(2.7 / 3.2) に C 拡張機能を書きました。残念ながら、最後の値がオプションである関数から 2 つの値を返す必要があります。Pythonで私が試した

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

test = func(13,4)    

しかしtest、タプルです。私が書くなら

test1,test2 = func(13,4)    

両方の値を分離しました。タプルをアンパックせずに 1 つの値のみを返す可能性はありますか?

また、そのようなソリューションが存在する場合、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 に答える