我们from module import function
称之为 FMIF 编码风格。
我们import module
称之为 IM 编码风格。
我们from package import module
称之为 FPIM 编码风格。
为什么 IM+FPIM 被认为是比 FMIF 更好的编码风格?(有关此问题的灵感,请参阅这篇文章。)
以下是一些让我更喜欢 FMIF 而不是 IM 的标准:
- 代码短:它允许我使用更短的函数名称,从而有助于坚持每行 80 列的约定。
- 可读性:
chisquare(...)
看起来比scipy.stats.stats.chisquare(...)
. 虽然这是一个主观标准,但我想大多数人都会同意。 - 易于重定向:如果我使用 FMIF 并且由于某种原因稍后想要重定向 python 以定义
function
fromalt_module
而不是module
我只需要更改一行:from alt_module import function
. 如果我要使用 IM,我需要更改很多行代码。
我对 IM+FPIM 可能优于 FMIF 的所有原因感兴趣,但特别是,我有兴趣详细阐述此处提到的以下几点:
IM 的优点:
- 易于在测试中模拟/注入。(我对模拟不是很熟悉,虽然我最近知道了这个术语的含义。你能在这里展示一下 IM 比 FMIF 更好的代码吗?)
- 通过重新定义一些条目来灵活更改模块的能力。(我一定是误解了一些东西,因为这似乎是 FMIF 优于 IM 的优势。请参阅上面我支持 FMIF 的第三个原因。)
- 数据序列化和恢复的可预测和可控行为。(我真的不明白 IM 或 FMIF 的选择如何影响这个问题。请详细说明。)
- 我知道 FMIF “污染了我的命名空间”,但除了听起来是负面的短语之外,我不理解这如何以任何具体方式伤害代码。
非常感谢。