这个问题在这里已经有了答案:
10年前关闭。
我习惯于像 Java 这样的语言要求所有 import
语句都出现在类/文件的顶部。
哪个被认为更像pythonic/“漂亮” - 将它们全部放在顶部或按需使用?
最佳答案
这取决于。
大多数情况下,您希望它位于顶部。这不是因为 PEP-8(任何引用 PEP-8 作为理由的人都误解了设计原理),而是出于 PEP-8 建议背后的实际原因:
如果您将导入放入函数中,而这些导入不可用,则可能会隐藏问题。导入模块时不会抛出异常,它只会在调用某个函数时发生。它的效率也有点低,按需引入名称,尽管这通常是次要的。
然而,这并不是硬性规定。您可能希望使用某些类型的特征检测按需导入。例如,
def decode(s):
try:
import cjson
return cjson.decode(s)
except ImportError:
import simplejson
return simplejson.loads(s)
print decode('[1,2,3]')
或类似地,
try:
import cjson
def decode(s):
return cjson.decode(s)
except ImportError:
import simplejson
def decode(s):
return simplejson.loads(s)
print decode('[1,2,3]')
您可能还特别希望仅在模块可用时才支持某些方法调用,而不会导致整个模块依赖于它。
关于import - "more pythonic"是将所有进口都放在顶部还是按需?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5302274/