gpt4 book ai didi

python - 是否自导入分包?

转载 作者:太空狗 更新时间:2023-10-30 00:08:37 25 4
gpt4 key购买 nike

假设你有以下内容

b
b/__init__.py
b/c
b/c/__init__.py
b/c/d
b/c/d/__init__.py

在一些python包中,如果你import b,你只会得到b中定义的符号。要访问 b.c,您必须显式地 import b.cfrom b import c。换句话说,你必须

import b
import b.c
import b.c.d
print b.c.d

在其他情况下,我看到了所有子包的自动导入。这意味着下面的代码不会产生错误

import b
print b.c.d

因为 b/__init__.py 负责导入它的子包。我倾向于第一个(显式比隐式好),而且我一直使用它,但是在某些情况下第二个比第一个更受欢迎吗?

最佳答案

我喜欢命名空间——所以我认为 import b 应该只获取 b 本身的内容(大概在 b/__init__.py ).如果有理由在 b.cb.c.d 或其他任何地方隔离其他功能,那么 import b 不应将其全部拖入 - 如果“全部拖入”确实发生了,我认为这表明 namespace 分离可能是一开始的虚假分离。当然,标准库里也有例子(import os,然后可以使用os.path.join之类的),不过比较古老,by现在基本上是在 Python 打包系统成熟和稳定之前“祖父”的东西。在新代码中,我强烈建议一个包在导入时不要将其子包拖到一起。 (在 Python 提示符下执行 import this 并考虑它显示的最后一行;-)。

关于python - 是否自导入分包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824001/

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