为什么我不能通过f2py调用Fortran子例程而没有正确的输入数量?

问题描述 投票:6回答:1

我正在尝试学习f2py,并且具有以下Fortran代码

      subroutine fibonacci(a, n)
      implicit none
      integer :: i, n
      double precision :: a(n)
      do i = 1, n
          if (i .eq. 1) then
              a(i) = 0d0
          elseif (i .eq. 2) then
              a(i) = 1d0
          else 
              a(i) = a(i - 1) + a(i - 2)
          endif
      enddo
      end subroutine fibonacci

[用f2py -c fibonacci.f -m fibonacci编译,后来在Python中调用

import numpy
import fibonacci

a = numpy.zeros(13)
fibonacci.fibonacci(a)
print a

在Python中调用的子例程fibonacci没有得到足够多的参数,但是代码神秘地起作用了。顺便说一句,用fibonacci调用子程序fibonacci.fibonacci(a, len(a))也可以!

有人可以解释一下吗?谢谢!

python fortran f2py
1个回答
6
投票

f2py从声明中知道an是函数参数

© www.soinside.com 2019 - 2024. All rights reserved.