【发布时间】:2010-11-04 16:10:58
【问题描述】:
PEP 8 说:
- 导入总是放在文件的顶部,就在任何模块之后 cmets 和 docstrings,以及模块全局变量和常量之前。
有时,我违反了 PEP 8。有时我在函数中导入东西。作为一般规则,如果有一个只在单个函数中使用的导入,我会这样做。
有什么意见吗?
编辑(我觉得在函数中导入可能是个好主意):
主要原因:可以让代码更清晰。
- 查看函数代码时,我可能会问自己:“什么是函数/类 xxx?” (函数内部使用了xxx)。如果我在模块的顶部有我的所有导入,我必须去那里看看 xxx 是什么。这在使用
from m import xxx时更成问题。在函数中看到m.xxx可能会告诉我更多信息。取决于m是什么:它是众所周知的顶级模块/包(import m)吗?或者它是一个子模块/包(from a.b.c import m)? - 在某些情况下,在使用 xxx 的位置附近添加额外信息(“什么是 xxx?”)可以使函数更易于理解。
【问题讨论】:
-
而你这样做是为了提高性能?
-
我觉得在某些情况下它使代码更清晰。我猜在导入函数时原始性能会下降(因为每次调用函数时都会执行导入语句)。
-
你可以回答“什么是函数/类xxx?”通过使用 import xyz 语法而不是 from xyz import abc 语法
-
如果清晰是唯一的因素,U 也可以包含相关的评论,以达到这个效果。 ;)
-
@becomingGuru:当然可以,但是 cmets 可能与现实不同步...
标签: python conventions