You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Fortran获取长度后创建指定长度列表的Python错误解决

解决Python调用Fortran获取长度后创建列表的问题

问题核心是ctypes类型变量与Python原生整数的类型差异,修正方案如下:

修正后的代码

import ctypes as ct

# 获取x的长度
n = ct.c_int(0)
fs(ct.byref(n))  # fs是返回目标长度的Fortran子程序
print('n: ', n.value)
x = [0] * n.value  # 提取ctypes变量的原生整数值来创建列表
print('x: ', x)

错误原因说明

  • 第一个错误 TypeError: can't multiply sequence by non-int of type 'c_long':
    n 是ctypes的c_int/c_long实例,并非Python原生整数,无法直接用于序列乘法操作,必须通过.value属性提取其实际存储的整数值。
  • 第二个错误 TypeError: byref() argument must be a ctypes instance, not 'int':
    ct.byref()要求传入ctypes类型的对象,不能直接传递Python原生int,因此必须用ct.c_int(0)这类ctypes数值类型初始化n。

补充说明

如果Fortran返回的是长整型数值,可将n初始化为ct.c_long(0),同样通过.value属性获取原生整数,即可创建对应长度的列表。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 04:52:08