让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出于某种原因,在一段时间后要重定向蟒蛇定义
function
从alt_module
不是module
我需要改变只有一条线路:from alt_module import function
。如果要使用IM,则需要更改许多代码行。
我对IM + FPIM可能比FMIF更好的所有原因都感兴趣,但是特别是,我对这里提到的以下几点感兴趣:
IM的优点:
- 易于在测试中进行模拟/注入。(尽管我最近对模拟不是很熟悉,但是我最近才了解该术语的含义。在这里,您可以显示代码来证明IM比FMIF更好吗?)
- 通过重新定义一些条目,模块可以灵活更改的功能。(我一定会误会,因为这似乎是FMIF相对于IM的优势。请参见上面支持FMIF的第三个理由。)
- 有关数据序列化和恢复的可预测和可控制的行为。(我真的不明白IM或FMIF的选择如何影响此问题。请详细说明。)
- 我知道FMIF会“污染我的名称空间”,但是除了听起来像是一个否定性的短语外,我不理解这会如何以任何具体的方式伤害代码。
非常感谢。