Python导入MODULE1模块后调用函数为何提示'area_of_Triangle'未定义
报错原因及解决方案
核心原因
你使用import MODULE1的导入方式时,模块内的函数、变量不会自动加入当前运行文件的全局命名空间,所以直接调用area_of_Triangle时,Python在当前作用域找不到对应定义,就会抛出未定义的报错。
前置检查项
- 确认保存三个函数的模块文件文件名确实为
MODULE1.py,Python模块名和文件名严格对应,大小写敏感,若文件名是module1.py会先触发模块找不到的报错 - 确认
MODULE1.py和你的独立运行文件在同一文件夹下,或者模块所在路径已加入Python的系统路径sys.path
两种修复方案
方案1:调用时加模块名前缀
修改独立运行文件的代码,所有模块内的方法调用前都带上MODULE1.前缀:
import MODULE1 print(MODULE1.area_of_Triangle(4.5, 5.6, units="square inches")) print(MODULE1.MyTuple(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) print(MODULE1.divide(2, 3))
方案2:导入时直接引入对应函数
把导入语句改成从模块中直接引入需要的函数到当前命名空间,就可以直接用原函数名调用:
from MODULE1 import area_of_Triangle, MyTuple, divide print(area_of_Triangle(4.5, 5.6, units="square inches")) print(MyTuple(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) print(divide(2, 3))
如果需要导入模块内所有内容,可以写from MODULE1 import *,但该方式容易引发命名冲突,不建议在中大型项目中使用。
内容的提问来源于stack exchange,提问作者Theriddler748
相关产品推荐
相关产品推荐

