2017-04-13 2 views
5

내 Python 코드에서 일부 M 파일을 사용하려면 Oct2Py를 사용하고 있습니다. 내가 옥타브에 전화를하면 어떻게됩니까Oct2Py는 첫 번째 출력 인수 만 반환합니다.

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

분명하다 :의 나는이 간단한 matlab에 기능을한다고 가정 해 봅시다 지금은 파이썬에서 그것을 호출하는 경우

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

, oct2py 사용 :

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

이 반환 :

TypeError: 'int' object is not iterable

octave.toto (n)가 첫 번째 값을 반환하는 것처럼 보입니다. 두 개를 기대할 때 ... 아무도 내가해야 할 일을 설명 할 수 있습니까? 여러 출력을 원한다면, 당신은 단순히 두 출력을 요청할 것 때문에 Oct2Py의 이전 버전 (3.x 및 이상)에서 감사

답변

5

는 출력 인수의 수는, 파이썬 동안 통화에서 유추 된

a, b = octave.toto(3) 

그러나 as of version 4.0는 이제 명시 적으로 4.0 릴리스에서

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

노트 출력 인수의 수를 지정하는 함수 호출에 nout kwarg를 사용할 필요가

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.

+0

차이점을 이해합니다. 그러나이 줄은 다음을 반환합니다. TypeError : 'int'개체를 반복 할 수 없습니다. 정확히 내가 작성한 것처럼 : [a, b] = octave.test (3) ... 실제로 octave.test (n)가 단일 출력을 제공합니다 ... – Telergoel

+0

@Telergoel 확실히 작동합니다. 함수 이름을 핵심 라이브러리 함수와 충돌하지 않는 것으로 변경할 수 있습니까? 또한 사용하려고하는 정확한 코드를 표시하십시오 – Suever

+0

필자의 함수 이름이 변경되었지만 더 이상 충돌은 없지만 여전히 TypeError입니다. 필요한 경우 정확한 코드 줄을 공유 할 수 있지만 위의 간단한 코드로 테스트하고 있으므로 실제로 작동하지 않습니다. – Telergoel

관련 문제