f2py支持在fortran語言中調用其他Fortran函數或C代碼或Python代碼 
 
分類:  Python  Numpy_Scipy  fortran  MinGW_GCC_Boost  f2py 2012-03-21 13:20  722人閱讀  收藏  舉報 
 
fortranpython語言csubroutine
 
 
 請看示例F77文件:
   [plain] view plaincopy  
C?FILE:?CALLBACK.F????????SUBROUTINE?FOO(FUN,R)????????EXTERNAL?FUN????????INTEGER?I????????REAL*8?R??Cf2py?intent(out)?r????????R?=?0D0????????DO?I=-5,5???????????R?=?R?+?FUN(I)????????ENDDO????????END??C?END?OF?FILE?CALLBACK.F??  
 在DOS窗口輸入:
   [plain] view plaincopy  
f2py?-c?-m?callback?callback.f??  
 下面是測試:
   [python] view plaincopy  
>>>?import?callback??>>>?print?callback.foo.__doc__??foo?-?Function?signature:????r?=?foo(fun,[fun_extra_args])??Required?arguments:????fun?:?call-back?function??Optional?arguments:????fun_extra_args?:=?()?input?tuple??Return?objects:????r?:?float??Call-back?functions:????def?fun(i):?return?r????Required?arguments:??????i?:?input?int????Return?objects:??????r?:?float????>>>?def?f(i):?return?i*i??...???>>>?print?callback.foo(f)???????110.0??>>>?print?callback.foo(lambda?i:1)??11.0??  更纖細的說明,請看官方網站:
 http://cens.ioc.ee/projects/f2py2e/
 ?
 可以再看下面的例子:
   [plain] view plaincopy  
??????subroutine?calculate(x,n)??cf2py?intent(callback)?func????????external?func??c?????The?following?lines?define?the?signature?of?func?for?F2PY:??cf2py?real*8?y??cf2py?y?=?func(y)??c??cf2py?intent(in,out,copy)?x????????integer?n,i????????real*8?x(n)????????do?i=1,n???????????x(i)?=?func(x(i))????????end?do????????end??  
 在DOS窗口輸入:
   [python] view plaincopy  
f2py?-c?-m?foo?calculate.f??  
 下面是在Python中測試:
 ?
   [python] view plaincopy  
>>>?import?foo??>>>?foo.calculate(range(5),?lambda?x:?x*x)??array([??0.,???1.,???4.,???9.,??16.])??>>>?import?math??>>>?foo.calculate(range(5),?math.exp)??array([??1.????????,???2.71828175,???7.38905621,??20.08553696,??54.59814835])??  
 以上都是官方的示例
                            總結
                            
                                以上是生活随笔為你收集整理的f2py支持在fortran语言中调用其他Fortran函数或C代码或Python代码的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                            
                                如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。