在函数内外导入
可能重复的问题:
Python的导入语句应该总是在模块的顶部吗?
在一个非常简单的单文件Python程序中,比如
# ------------------------
# place 1
# import something
def foo():
# place 2
# import something
return something.foo()
def bar(f):
...
def baz():
f = foo()
bar(f)
baz()
# ----------------
你会把“导入某个东西”的语句放在第1行还是第2行呢?
2 个回答
5
我基本上同意Robert S.的回答,但有时候把代码放进一个函数里是有道理的。特别是当你想控制导入模块的方式时,这样做很有用。如果你不确定自己是否真的能访问某个特定的模块,这种情况就特别适用。看看这个例子:
def foo():
try:
import somespecialmodule
# do something
# ...
except ImportError:
import anothermodule
# do something else
# ...
这甚至可能适用于标准库中的模块(我特别想到的是optparse
和argparse
模块)。
12
PEP 8 规定了以下内容:
导入的内容总是放在文件的最上面,紧接着模块的注释和文档字符串之后,然后再放模块的全局变量和常量。
导入的内容应该按照以下顺序分组:
- 标准库的导入
- 相关的第三方库导入
本地应用程序或库特定的导入
每组导入之间应该留一行空白。
在导入之后,放上任何相关的all 说明。