【发布时间】:2013-04-10 21:59:04
【问题描述】:
我正在为大约 30 名开发人员的团队编写一套 Python 编码指南。作为我的文档的基础,到目前为止,我已经研究了 Google python style guide 和 PEP 8 style guide,并结合了两者的信息。
Google 样式指南比 PEP 8 更严格的一个地方是导入。 Google 指南要求开发人员仅导入包和模块,然后通过更合格的名称引用其中的项目。例如:
from pkg import module
...
my_class = module.MyClass()
理由是“每个标识符的来源都以一致的方式指示”。对于我们的项目,我们打算用两到三层深度的包来组织,所以要知道标识符的完整来源,读者可能无论如何都需要检查导入语句。我想提倡这种导入风格作为“首选风格”:
from pkg.module import MyClass
...
my_class = MyClass()
恕我直言,当名称更简洁时,列表推导等 Python 结构的可读性会得到提高。
我不清楚的是 python 解释器可能在幕后做什么。例如,MyClass 现在是这个模块和这个模块的所有导入器的全局命名空间的一部分吗? (这会很糟糕,可能会导致一些奇怪的错误;如果这是真的,我会提倡 Google 风格)。
我的python开发经验被限制在6个月左右(而且我们项目上没有太多专家可以咨询),所以我想从社区获得更多信息。以下是我已经研究过的一些项目:
effbot - discussion on imports
stack overflow - import vs. from import
python documentation - modules
感谢您的回复!
【问题讨论】:
-
Anything 你可以直接引用的都是你模块中的全局变量。
MyClass在你的第二个例子中确实是一个全局变量,在第一个例子中,module是。 -
我喜欢
import blah和vlah = blah.vlah。因为整个模块blah无论如何都会被处理,即使我做了from blah import vlah -
除了 Martijn 回答的全球性问题之外,您是否还在寻找其他东西。如果是这样,你能把问题说得更清楚吗?
-
在知名的Python项目中,比如Django或者fabric,可以看到
from pkg.module import MyClass是最常用的样式。