Oct2Py возвращает только первый выходной аргумент

Я использую Oct2Py для использования некоторых M-файлов в моем коде Python. Допустим, у меня есть эта простая функция 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)

Это возвращает:

Ошибка типа: объект 'int' не повторяется

Кажется, что octave.toto (n) возвращает только первое значение, когда я ожидал двух... Может кто-нибудь объяснить мне, что я должен делать? Спасибо

1 ответ

Решение

В более старых версиях Oct2Py (3.x и более ранних) число выходных аргументов было выведено из вызова в Python, поэтому, если вы хотите получить несколько выходов, вы просто запросите оба выхода

a, b = octave.toto(3)

Тем не менее, начиная с версии 4.0 теперь вам нужно использовать nout kwarg для вызова вашей функции, чтобы явно указать желаемое количество выходных аргументов

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

Из примечаний к выпуску 4.0

Удаленный вывод nout для вызовов функций Octave; это должно быть явно указано, если нет 1. Старое поведение было слишком неожиданным и основывалось на внутренней логике интерпретатора CPython.

Другие вопросы по тегам