f2py是numpy自帶的一個工具,只要安裝了numpy,一般都會安裝f2py.exe和f2py.py兩個檔案.
f2py.exe適合在命令列中使用,而f2py.py則一般在Python程式碼中使用.
廢話少說, 先建立一個testfortran.f90的檔案如下:
[plain] view plain copy
!SUBROUTINE
SUBROUTINE ADDSUB(A,B,C,D)
IMPLICIT NONE
DOUBLE PRECISION A,B,C,D
!f2py intent(in) :: A,B
!f2py intent(out) :: C,D
C = A + B
D = A - B
print*, "ADDSUB From Fortran!"
print*, "ADD=",C
print*, "SUB=",D
RETURN
END
注意這兩行的程式碼:
對於Fortran只是註釋,但對於f2py卻很重要,相當於"簽名".
注意簽名的註釋前面不能有空格!
當然也可以寫成如下的形式:
Cf2py intent(in) :: A,B
Cf2py intent(out) :: C,D
下面開始編譯Fortran程式碼為python模組,開啟CMD視窗,輸入如下命令:
f2py -m testfortran -c testfortran.f90
會在當前目錄下生成testfortran.pyd的檔案.
下面就可以再python中使用這個模組了:
[python] view plain copy
In [1]: import testfortran
In [2]: print testfortran.__doc__
This module "testfortran" is auto-generated with f2py (version:2).
Functions:
c,d = addsub(a,b)
.
In [3]: x=testfortran.addsub(4,9)
ADDSUB From Fortran!
ADD= 13.000
SUB= -5.000
In [4]: x
Out[4]: (13.0, -5.0)
In [5]:
f2py是numpy自帶的一個工具,只要安裝了numpy,一般都會安裝f2py.exe和f2py.py兩個檔案.
f2py.exe適合在命令列中使用,而f2py.py則一般在Python程式碼中使用.
廢話少說, 先建立一個testfortran.f90的檔案如下:
[plain] view plain copy
!SUBROUTINE
SUBROUTINE ADDSUB(A,B,C,D)
IMPLICIT NONE
DOUBLE PRECISION A,B,C,D
!f2py intent(in) :: A,B
!f2py intent(out) :: C,D
C = A + B
D = A - B
print*, "ADDSUB From Fortran!"
print*, "ADD=",C
print*, "SUB=",D
RETURN
END
注意這兩行的程式碼:
[plain] view plain copy
!f2py intent(in) :: A,B
!f2py intent(out) :: C,D
對於Fortran只是註釋,但對於f2py卻很重要,相當於"簽名".
注意簽名的註釋前面不能有空格!
當然也可以寫成如下的形式:
[plain] view plain copy
Cf2py intent(in) :: A,B
Cf2py intent(out) :: C,D
下面開始編譯Fortran程式碼為python模組,開啟CMD視窗,輸入如下命令:
[plain] view plain copy
f2py -m testfortran -c testfortran.f90
會在當前目錄下生成testfortran.pyd的檔案.
下面就可以再python中使用這個模組了:
[python] view plain copy
In [1]: import testfortran
In [2]: print testfortran.__doc__
This module "testfortran" is auto-generated with f2py (version:2).
Functions:
c,d = addsub(a,b)
.
In [3]: x=testfortran.addsub(4,9)
ADDSUB From Fortran!
ADD= 13.000
SUB= -5.000
In [4]: x
Out[4]: (13.0, -5.0)
In [5]: