这个问题在这里已经有了答案:




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/

10-10 03:40