python - 为什么我不能引用顶级 Python 模块中的子模块?
问题描述
我对 Python 如何导入和处理子模块感到困惑。为什么我不能执行以下操作?
import concurrent
ex = concurrent.futures.ThreadPoolExecutor()
结果是
AttributeError:模块“并发”没有属性“期货”
查看源代码我看到并发库文件夹有一个空__init__.py
文件。Python 不应该将文件夹视为一个模块并因此搜索 futures 子模块(存在)吗?
我知道我可以导入 as import concurrent.futures
,但是我不清楚为什么我不能只导入顶级模块并引用子模块,因为它符合 Python__init__.py
结构。
解决方案
对于 Python 模块,有时它们是分开的,以强制用户显式导入子模块,以免在加载具有许多子模块的模块时使命名空间混乱并减少内存使用。
推荐阅读
- python - 如何访问定义之外的使用变量?
- javascript - 另一个函数的函数包装器
- javascript - res.send 无法正常运行
- html - 如何在 html 输入中有两种类型
- r - 如何从r中的数据框中提取唯一值
- microservices - 如果将来不推荐 RestTemplate,Feign Client 会发生什么
- flutter - 在一个 Bloc 中合并流
- flutter - 容器不会颤抖到屏幕底部?
- spring - Spring Boot HTTP 使用 Kubernetes Ingress 确保安全(HTTPS)
- bash - 使用转义引号执行字符串(即 $COMMAND)不会给出正确的行为