导入内部或外部功能[重复]
Posted
技术标签:
【中文标题】导入内部或外部功能[重复]【英文标题】:import inside or outside function [duplicate] 【发布时间】:2011-11-02 14:36:31 【问题描述】:可能重复:Should Python import statements always be at the top of a module?
在一个非常简单的单文件python程序中
# ------------------------
# place 1
# import something
def foo():
# place 2
# import something
return something.foo()
def bar(f):
...
def baz():
f = foo()
bar(f)
baz()
# ----------------
你会把“import something”放在第 1 位还是第 2 位?
【问题讨论】:
【参考方案1】:我主要同意 Robert S. 的回答,但有时将其放入函数中是有意义的。特别是如果您想控制导入机制。如果您无法确定您是否真的可以访问特定模块,这将很有用。考虑这个例子:
def foo():
try:
import somespecialmodule
# do something
# ...
except ImportError:
import anothermodule
# do something else
# ...
标准库模块甚至可能是这种情况(我特别想到了optparse
和argparse
模块)。
【讨论】:
如果您这样做,最好在常规导入时的评论中提及它,以便阅读代码的人得到提醒。【参考方案2】:PEP 8 指定:
导入总是放在文件的顶部,就在任何模块之后 cmets 和 docstrings,以及模块全局变量和常量之前。
进口应按以下顺序分组:
-
标准库导入
相关的第三方进口
本地应用程序/库特定导入
您应该在每组导入之间放置一个空行。
在导入之后放置任何相关的all规范。
【讨论】:
以上是关于导入内部或外部功能[重复]的主要内容,如果未能解决你的问题,请参考以下文章