将所有进口产品置于最高位置或根据需求,是否更“pythonic”?

时间:2011-03-14 17:45:24

标签: import python

  

可能重复:
  Good or bad practice in Python: import in the middle of a file

我习惯于像Java一样的语言,要求所有import语句出现在类/文件的顶部。

哪个被认为是更加pythonic /“美丽” - 将它们全部放在顶部,或根据需要,因为它们是需要的?

1 个答案:

答案 0 :(得分:8)

取决于。

大部分时间你都希望它在顶部。这不是因为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]')

您可能还特别希望仅在模块可用时支持某些方法调用,而不会导致整个模块依赖它。