Oct2Py只返回第一个输出参数

Tel*_*oel 5 python matlab octave oct2py

我正在使用Oct2Py在我的Python代码中使用一些M文件.假设我有这个简单的Matlab函数:

function [a, b] = toto(c);
    a = c;
    b = c + 1;
end
Run Code Online (Sandbox Code Playgroud)

如果我在Octave中调用它会发生什么:

>> [x,y] = toto(3)
x = 3
y = 4
Run Code Online (Sandbox Code Playgroud)

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

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

返回:

TypeError:'int'对象不可迭代

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

Sue*_*ver 6

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

a, b = octave.toto(3)
Run Code Online (Sandbox Code Playgroud)

但是,从版本4.0开始,您现在需要将noutkwarg用于函数调用,以显式指定所需数量的输出参数

a, b = octave.toto(3, nout=2)
Run Code Online (Sandbox Code Playgroud)

从4.0发行说明

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