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

Python运行报TypeError: 'module' object is not callable求助

问题描述

运行Python程序时抛出TypeError: 'module' object is not callable类型错误,多次排查无法定位问题根源。

触发报错的原始代码

import numpy as np
import tmm
import matplotlib.pyplot as plt

nlambda = 1000
wavelengths = np.linspace(400,800,nlambda)
ns = np.linspace(1.48,1.48,nlambda)
ts = 500
na = 1.0
nf = np.linspace(1.217,1.217,nlambda)
thk = np.array([550/4/1.217])
q = 0.0*np.pi/180.0 
sp= 'TM'

back = 0
[T,R,t,r] = tmm (wavelengths,ns,ts,na,nf,thk,q,sp,back)
back = 1
    
[T,Rb,t,r] = tmm(wavelengths,ns,ts,na,nf,thk,q,sp,back)
np.savetxt('tmm_R_withwithout.data',np.transpose([wavelengths,R,Rb]))
plt.plot(wavelengths,R,wavelengths,Rb)
plt.xlabel('Wavelength')
plt.ylabel('Reflection')
plt.show()

报错原因

import tmm导入的是tmm整个模块对象,模块本身不支持直接加括号传参调用。代码中两处tmm(参数)的写法,是把模块当成了可执行函数调用,才会触发该类型错误。tmm库实际提供计算能力的是模块内部同名的tmm函数,不是模块本身。

修复方法

两种方案任选其一即可:

  • 方案1:修改导入语句,直接导入目标函数
    将import tmm替换为from tmm import tmm,后续调用代码无需改动。
  • 方案2:保留原有导入语句,补全函数调用路径
    将两处调用的tmm(参数)修改为tmm.tmm(参数),明确指定调用模块下的tmm函数。

修正后可正常运行的代码

import numpy as np
from tmm import tmm
import matplotlib.pyplot as plt

nlambda = 1000
wavelengths = np.linspace(400,800,nlambda)
ns = np.linspace(1.48,1.48,nlambda)
ts = 500
na = 1.0
nf = np.linspace(1.217,1.217,nlambda)
thk = np.array([550/4/1.217])
q = 0.0*np.pi/180.0 
sp= 'TM'

back = 0
[T,R,t,r] = tmm(wavelengths,ns,ts,na,nf,thk,q,sp,back)
back = 1
    
[T,Rb,t,r] = tmm(wavelengths,ns,ts,na,nf,thk,q,sp,back)
np.savetxt('tmm_R_withwithout.data',np.transpose([wavelengths,R,Rb]))
plt.plot(wavelengths,R,wavelengths,Rb)
plt.xlabel('Wavelength')
plt.ylabel('Reflection')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:45:32