【问题标题】: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 位?

【问题讨论】:

    标签: python


    【解决方案1】:

    我主要同意 Robert S. 的回答,但有时将其放入函数中是有意义的。特别是如果您想控制导入机制。如果您无法确定您是否真的可以访问特定模块,这将很有用。考虑这个例子:

    def foo():
        try:
            import somespecialmodule
            # do something
            # ...
        except ImportError:
            import anothermodule
            # do something else
            # ...
    

    标准库模块甚至可能是这种情况(我特别想到了optparseargparse 模块)。

    【讨论】:

    • 如果您这样做,最好在常规导入时的评论中提及它,以便阅读代码的人得到提醒。
    【解决方案2】:

    PEP 8 指定:

    • 导入总是放在文件的顶部,就在任何模块之后 cmets 和 docstrings,以及模块全局变量和常量之前。

      进口应按以下顺序分组:

      1. 标准库导入
      2. 相关的第三方进口
      3. 本地应用程序/库特定导入

        您应该在每组导入之间放置一个空行。

        在导入之后放置任何相关的all规范。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-08
      • 2012-08-24
      • 2020-01-25
      • 2020-04-27
      • 2020-12-10
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多