PEP 8说:
- Imports are always put at the top of the file, just after any module comments and docstrings, and before module globals and constants.
偶尔,我违反了8号政治公众人物。有时我会在函数中导入内容。一般来说,如果有一个只在单个函数中使用的导入,我会这样做。
有什么意见吗?
编辑(我觉得导入函数是个好主意):
主要原因:它可以使代码更清晰。
from m import xxx
时更是一个问题。在函数中看到m.xxx
可能会告诉我更多。取决于m
是什么:它是一个众所周知的顶级模块/包(import m
)?还是子模块/包(from a.b.c import m
)?
在这方面,我有两次违反了PEP 8:
import pdb; pdb.set_trace()
这是一个方便的b/c,我不想把import pdb
放在我可能要调试的每个模块的顶部,而且在删除断点时很容易记住删除导入。除了这两种情况外,最好把一切放在首位。它使依赖关系更加清晰。
下面是我们使用的四个导入用例
顶端的
import
(以及from x import y
和import x as y
)导入选项。在上面。
条件导入。与JSON、XML库等一起使用。在上面。
动态导入。到目前为止,我们只有一个例子。
注意,这个动态导入不会引入代码,但是会引入复杂的 用Python编写的数据结构。这有点像一段腌制过的数据 但我们用手腌制。
它也或多或少地位于模块的顶部
我们要做的是使代码更清晰:
保持模块短。
如果我的所有导入都在模块的顶部,那么我必须查看那里以确定名称是什么。如果模块很短,这很容易做到。
在某些情况下,将这些额外的信息放在接近使用名称的位置可以使函数更容易理解。如果模块很短,这很容易做到。
从长远来看,我认为您会很感激将大部分导入放在文件顶部,这样您就可以通过需要导入的内容一眼看出模块有多复杂。
如果我在现有文件中添加新代码,我通常会在需要的地方进行导入,然后如果代码保持不变,我会将导入行移到文件的顶部,使其更为永久。
还有一点,我更喜欢在运行任何代码之前得到一个
ImportError
异常——作为一个健全性检查,所以这是在顶部导入的另一个原因。我使用
pyChecker
检查未使用的模块。相关问题 更多 >
编程相关推荐