Python从同目录其他文件导入列表报cannot import name 'Text'错误
问题成因
报错cannot import name 'Text' from 'func'的核心原因是作用域规则限制:
- 你在
func.py中定义的Text是openText()函数内部的局部变量,仅在函数执行过程中存在于函数内部作用域,不属于func模块的顶层全局属性,模块层面根本不存在名为Text的对象,自然无法被导入。 - 除此之外你的代码还有两个隐藏bug:
- 调用
openText()时没有用变量接收返回值,函数执行后返回的列表会被直接丢弃 print[Text]是语法错误:print是Python内置函数,传参必须用圆括号(),方括号[]是下标取值语法,运行到这行还会触发类型错误。
- 调用
解决方法
不需要修改func.py的现有逻辑,直接修正main.py的写法即可:
- 删除无效的
from func import Text导入语句 - 调用
openText()时用变量接收它的返回值 - 把
print后的方括号改成圆括号
修正后的main.py代码如下:
from func import openText # 接收函数返回的文本列表 result = openText() # 用正确的函数调用语法打印结果 print(result)
补充:如果你非要实现直接
from func import Text的效果,需要把Text提升为func.py的全局变量,但这种写法非常不推荐——全局变量容易被意外修改,在多次调用函数时很容易出现数据混乱的问题,用函数返回值传递结果是更清晰、更易维护的写法。
内容的提问来源于stack exchange,提问作者Delicious_pie
相关产品推荐
相关产品推荐

