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

rip*_*234 4 python import

可能重复:
Python中的好或坏做法:在文件中间导入

我已经习惯了Java这样的语言,它要求所有import语句都出现在类/文件的顶部.

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

Gle*_*ard 9

这取决于.

大多数时候你想要它在顶部.这不是因为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]')
Run Code Online (Sandbox Code Playgroud)

或类似地,

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]')
Run Code Online (Sandbox Code Playgroud)

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