仅在函数中导入模块是否正确,而不是在文件的开头?

问题描述 投票:0回答:4

所以,我有一个关于import ModuleName的问题,我应该把这个运算符放在哪里。在文件的开头或函数中?

import some_module

def main():
    some_module.SomeStuff()

要么:

def main():
    import some_module
    some_module.SomeStuff()

但是,如果我将它用于多个功能?这是正确的还是愚蠢的?或者我需要使用__init__函数创建类:self.module = some_module.SomeStuff()?然后在类下的其他函数中调用它?

python import
4个回答
1
投票

创建一个导入类不是pythonic实际上它是坏的。您应该将模块作为名称空间导入以调用该模块中的函数,或者您可以导入特定的函数:

from some_module import SomeFunc1, SomeFunc2
# or
import some_module
some_module.SomeFunc1()

Import语句必须位于源文件的顶部(查看pep8)


0
投票

正确的方法是在文件的开头import modulefrom module import func_a。它看起来更干净,更好。如果您只想导入一个或两个函数,只需使用第二个函数。


0
投票

pep08 recommands that all imports should happen at the beginning of the module,这是要走的路,除非你有一个非常令人信服的理由不这样做。

我能想到的唯一原因是两个模块之间的循环依赖(模块A尝试导入模块B,尝试导入模块A等......)但是最好通过分解公共元素来干净地解决问题。第三个模块既不依赖于A也不依赖于B.


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.