This scipy documentation page о F2Py состояниях:Как экспонировать обратные вызовы Python для Fortran с использованием модулей
[Callback функции] также могут быть явно установлены в модуле. Затем нет необходимости передавать функцию в списке аргументов в функцию Fortran . Это может быть необходимо, если функция Fortran, вызывающая , функция обратного вызова python сама вызывается другой функцией Fortran .
Однако я не могу найти пример того, как это будет сделано.
Рассмотрим следующую комбинацию Fortran/Python:
test.f:
subroutine test(py_func)
use iso_fortran_env, only stdout => output_unit
!f2py intent(callback) py_func
external py_func
integer py_func
!f2py integer y,x
!f2py y = py_func(x)
integer :: a
integer :: b
a = 12
write(stdout, *) a
end subroutine
call_test.py:
import test
def func(x):
return x * 2
test.test(func)
скомпилирован с помощью следующей команды (Intel компилятор):
python f2py.py -c test.f --fcompiler=intelvem -m test
Какие изменения я должен предпринять, чтобы выставить func
на всю Fortran программы в виде модуля, так что я мог бы вызвать функцию внутри подпрограммы test
, или любой другой подпрограммы в любом другом FORtran файла проект?
ли код модуля здесь помощь ? https://code.google.com/p/f2py/wiki/FAQ2ed, похоже, что новый модуль создан, хотя я немного смущен, является ли он модулем python или модулем fortran. –
Извините, забыли добавить ответ, который я нашел по этому вопросу. Ваш комментарий напомнил мне. Смотри ниже. – JimmidyJoo