Вот пример вызова моей функции:
Код: Выделить всё
io = 7.5
io, out1, out2, out3 = fortran_file.func(5, 2.5, False, io)
Код: Выделить всё
subroutine func(inputA, inputB, inputC, ioD, outE, outF, outG)
integer inputA
real inputB
logical inputC
real ioD, outE, outF, outG
real localH
if(.not.inputC) then
localH= ioD
else
localH= inputB
endif
ioD= ioD + localH
outE= inputA + 10.5
outF= inputA + 5.5
outG= inputA + 1.5
return
end
Код: Выделить всё
python.exe -m numpy.f2py -m fortran_file -h sig_example.pyf example.f
Код: Выделить всё
python.exe -m numpy.f2py -c sig_example.pyf example.f
Даже если io явно использует намерение (inout), f2py не возвращает его.
Я использовал параметр --build-dir в f2py, чтобы просмотреть сгенерированный код C для оболочки.
Списки файлов io в разделе «Параметры», но там написано массив in/output Rank-0(float,'f)
Это говорит мне о том, что он знает, что он должен быть inout, но я не понимаю, почему он помечает его как массив?
Это также не так. list io в разделе «Возвраты», что меня еще больше сбивает с толку.
Связанный вызов Py_BuildValue также не включает io в список аргументов.
Почему кажется? например, inout не должен возвращаться?
В этом весь смысл inout, и для некоторых файлов он необходим.
Я понимаю, что весь этот вопрос нишевый, но я мог бы действительно нужна помощь здесь. Есть ли способ указать намерения параметров внутри Python? Потому что у меня слишком много файлов, чтобы редактировать подписи вручную.
Подробнее здесь: https://stackoverflow.com/questions/779 ... s-expected
Мобильная версия