Oct2Py只返回第一个输出参数

时间:2017-04-13 14:03:24

标签: python matlab octave oct2py

我使用Oct2Py在我的Python代码中使用一些M文件。让我们说我有这个简单的Matlab函数:

function [a, b] = toto(c);
    a = c;
    b = c + 1;
end

如果我在Octave中调用它会发生什么事情显然是:

>> [x,y] = toto(3)
x = 3
y = 4

现在如果我用Python调用它,使用oct2py:

from oct2py import octave
my_dir = "D:\\My_Dir"
octave.addpath(my_dir)
a,b = octave.toto(3)

返回:

  

TypeError:' int'对象不可迭代

似乎octave.toto(n)只返回第一个值,当我期待两个......有人可以向我解释我应该做什么吗?感谢

1 个答案:

答案 0 :(得分:6)

在旧版本的Oct2Py(3.x及更早版本)中,输出参数的数量是从Python中的调用中推断出来的,所以如果你想要多个输出,你只需要两个输出

a, b = octave.toto(3)

但是,as of version 4.0您现在需要使用nout kwarg来调用函数来明确指定所需的输出参数数

a, b = octave.toto(3, nout=2)

从4.0发行说明

  

为Octave函数调用删除了推断的nout;必须明确给出,如果不是1.旧的行为太令人惊讶,并依赖于CPython解释器的内部逻辑。