python - 在 python 中调用 fortran 代码时如何处理全局变量(例如使用 f2py)?

标签 python global-variables fortran f2py

我想用 python 运行一些 Fortran 代码,我正在使用 f2py -c -m 来运行它。但是,似乎只有 FUNCTIONs 被打包到 .so 文件中,而 PROGRAM 没有。那我该如何处理全局变量呢?例如,一个变量c被放入一个模块

MODULE nfw
  double precision :: c
END MODULE nfw

,在PROGRAM中被修改,并被同一个文件中的FUNCTION隐式使用

PROGRAM Compute_Profile
  USE nfw
  c = 5.0
END PROGRAM Compute_Profile

DOUBLE PRECISION FUNCTION y(x)
  USE nfw
  double precision :: x
  y = c * x
  return
END FUNCTION y

如何在 python 中调用让函数 y(x) 知道 c 的值?

最佳答案

在您的 f2py 模块下应该是另一个模块,名为 nfw 的 Fortran 模块。它应该在那里。

$ f2py -c -m mod nfw.f90

$ python
import mod
mod.nfw.c

array(0.0)

确保使用 f2py 编译带有模块的源文件。

关于python - 在 python 中调用 fortran 代码时如何处理全局变量(例如使用 f2py)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129493/

相关文章:

python - 创建一个字典,其值每次使用时都会更新

QTP中使用python脚本代替VBscript

namespaces - 在 ES6 中使用 IIFE 命名空间?

fortran - 除以零时的无穷大符号

performance - Fortran多维子数组性能

pointers - Fortran 指针赋值可以通过类型绑定(bind)的泛型过程重载吗?

python - 总结嵌套字典列表的最简洁方法

Python - 如何对字母和数值列表进行排序?

gcc - 为什么 gcc 不会编译未初始化的全局常量?

Python Flask 只运行一次代码