可能重复:
Good or bad practice in Python: import in the middle of a file
我习惯于像Java一样的语言,要求所有import
语句出现在类/文件的顶部。
哪个被认为是更加pythonic /“美丽” - 将它们全部放在顶部,或根据需要,因为它们是需要的?
答案 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]')
您可能还特别希望仅在模块可用时支持某些方法调用,而不会导致整个模块依赖它。