gpt4 book ai didi

python - 将导入的模块排除在 python 包命名空间之外

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:07 24 4
gpt4 key购买 nike

我注意到,有时如果您在包/模块上调用 dir(),您会在命名空间中看到其他模块,这些模块是作为实现的一部分导入的,并不意味着你使用。例如,如果我从 PyPI 安装 fish 包并导入它,我会看到 fish.sys,它只引用内置的 sys 模块。

我的问题是这是否合理,如果不合理该怎么办。

我认为 __all__ 变量不太相关,因为它 影响from X import * 的行为。我看到的选项是:

  • 更好地构建您的包,至少将困惑的命名空间插入子模块
  • 在你的包中使用import X as _X来区分实现细节和你的包API
  • 从你的函数中导入东西(blegh)

最佳答案

My question is whether that's sane

这是理智的。执行 import fish 只会将一个名称添加到您的命名空间,而不是“命名空间困惑”。这几乎是模块背后的伟大理念,将许多东西归为一个名称!

当你想知道一个模块做什么时,查看文档或调用help,不要做dir

Python 中的所有名称都存储在字典中。这意味着无论您看到多少个名字,查找其中一个都需要花费恒定的时间。因此也没有任何类型的速度缺陷。

关于python - 将导入的模块排除在 python 包命名空间之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com