我对Python如何导入和处理子模块感到困惑。 为什么我不能做以下事情
import concurrent
ex = concurrent.futures.ThreadPoolExecutor()
结果是
AttributeError: module 'concurrent' has no attribute 'futures'
查看源代码,我发现并发库文件夹有一个空的__init__.py
文件。
Python不应该将文件夹视为一个模块,然后搜索未来子模块(它存在)
我知道我可以作为import concurrent.futures
导入,但是我不清楚为什么我不能只导入顶层模块并引用子模块,因为它符合Python __init__.py
结构
对于Python模块,有时它们是分开的,以强制用户显式导入子模块,从而在加载附加了许多子模块的模块时不会使名称空间混乱,并减少内存使用
相关问题 更多 >
编程相关推荐