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.