gpt4 book ai didi

python - 编写 python 库 : structure, 命名和导入最佳实践

转载 作者:太空狗 更新时间:2023-10-30 01:09:45 24 4
gpt4 key购买 nike

假设我必须为我的公司编写几个中小型库。

以 pythonic 的方式使用 Java 方法并为所有这些方法加上一个通用的高级包(啊哈,模块)作为前缀是否有意义,例如实现以下结构:

mycompany.mylibrary1.moduleA
mycompany.mylibrary1.moduleB.moduleD
mycompany.mylibrary2.moduleC

还是干脆去做更好:

mylibrary1.moduleA
mylibrary1.moduleB.moduleD
mylibrary2.moduleC

我看到大部分时间都使用第二种方法,但我一直在寻找确认(或不确认)这是要走的路。

我在 PEP 008 中找不到这方面的任何内容, 旁边:

The naming conventions of Python's library are a bit of a mess, so we'll never get this completely consistent [...]

然后我们只得到模块和类命名指示,以及不鼓励相对导入的事实。

事实上,绝对 导入是决定如何组织库的真正重要的方式(我在这里不是要讨论避免相对导入是好是坏)。

我确实喜欢为所有库命名空间的 Java 方法,但我的印象是它不是 pythonic...建议的方法是什么?

附言。虽然一般来说“最佳实践”问题在 SO 上被认为是主观的,但在 Python 中,PEP 的存在使它们在我看来非常客观!尽管答案可能是……没有组织库的最佳实践……

最佳答案

python 导入和名称存在认知问题。由于一阶对象种类繁多(基元、模块、类、函数、伪装成模块的类、伪装成对象的模块等等),人们倾向于使用点符号来表示实体具有“到达”来自外部来源。因此

import foo.bar
e = foo.bar.make_entity()

感觉比

更清晰
from foo.bar import make_entity
e = make_entity()

但是,这意味着您将经常需要键入您需要访问的任何内容的完整路径。 “com.example.some.lib.module.frobnicate() 很快就会让人厌烦。因此,礼貌的图书馆会为其访问提供一个合理的短名称。

关于python - 编写 python 库 : structure, 命名和导入最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10448065/

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