python - 在 python 中导入模块的最 pythonic 方法是什么

标签 python python-import

谁能建议我在 python 中导入模块的最 pythonic 方式是什么? 让我解释一下 - 我已经阅读了很多 python 代码并找到了几种不同的方式来导入模块,或者更准确地说 - 何时导入:

  1. 使用一个模块/多个模块,其中包括整个项目所需的所有导入(第三方模块),因此所有导入都集中在几个模块中,因此易于维护导入。当任何单个模块需要导入任何模块时,它会为它请求引用模块。 例如,在我们的项目中,我们将名为“references”的级别分开,因此它包含诸如“system.py”(包含对所有系统库的引用)、“platform.py”(包含对所有平台库的引用)、“devexpress.py”等模块'(包含对所有 devexpress 库的引用)等等。这些模块看起来像:
  2. 每个模块都在模块顶部导入所有必要的类和函数 - 例如项目中的每个模块中都有一个包含导入的部分
  3. 每个函数/类都在本地使用导入,例如在定义后立即导入,并且只导入它们真正需要的东西。

请在下面找到示例。

1 个示例导入模块 - 仅“导入”和“来自...导入...”语句(无任何方法或类):

#references.py
import re
import clr
import math

import System
import System.Text.RegularExpressions
import System.Random
import System.Threading
import System.DateTime

# System assemblies

clr.AddReference("System.Core")
clr.AddReference("System.Data")
clr.AddReference("System.Drawing")
...

#test.py
from references.syslibs import (Array, DataTable, OleDbConnection, OleDbDataAdapter,
                                 OleDbCommand, OleDbSchemaGuid)

def get_dict_from_data_table(dataTable):
    pass

2 带有“导入”和“来自...导入...”的模块以及方法和类:

from ... import ...
from ... import ...

def Generate(param, param1 ...):
    pass

3 带有“import”和“from ... import ...”语句的模块,这些语句在方法和类中使用:

import clr
clr.AddReference("assembly")       

from ... import ...
...

def generate_(txt, param1, param2):
  from ... import ...
  from ... import ...
  from ... import ...

  if not cond(param1): res = "text"
  if not cond(param2): name = "default"

那么在 python 中导入模块的最 pythonic 方式是什么?

最佳答案

真的没关系,只要你不from ... import *。剩下的就是品味和解决循环导入问题。 PEP 8指出您应该在脚本的顶部导入,但即使这样也不是一成不变的。

关于python - 在 python 中导入模块的最 pythonic 方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6372159/

相关文章:

python - 对于列表的每个成员,将其写入单独的文件 python

Python 使用 ctypes 传递参数,参数无效

python - 如何使用 Flask-SQLAlchemy 仅选择数据库中的某些列?

python - 如何将值作为 Pandas 数据框中的新列

python-3.x - Python - 猴子补丁失败,为什么?

python - 将实例命名为与模块相同的名称是否可以?

python - Python 3 中的相对导入

python - pygame 事件可以在 select.select 输入列表中处理吗?

python - 在哪里使用光线 Actor 导入 tensorflow ?

python - 在 Python Ubuntu 14.04 中导入 Wand