Oct2Py 只返回第一个输出参数

Oct2Py only returning the first output argument

我使用 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)

这个returns:

TypeError: 'int' object is not iterable

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

在旧版本的 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 发行说明

Removed inferred nout for Octave function calls; it must be explicitly given if not 1. The old behavior was too surprising and relied on internal logic of the CPython interpreter.