谁能建议我在 python 中导入模块的最 pythonic 方式是什么? 让我解释一下 - 我已经阅读了很多 python 代码并找到了几种不同的方式来导入模块,或者更准确地说 - 何时导入:
- 使用一个模块/多个模块,其中包括整个项目所需的所有导入(第三方模块),因此所有导入都集中在几个模块中,因此易于维护导入。当任何单个模块需要导入任何模块时,它会为它请求引用模块。 例如,在我们的项目中,我们将名为“references”的级别分开,因此它包含诸如“system.py”(包含对所有系统库的引用)、“platform.py”(包含对所有平台库的引用)、“devexpress.py”等模块'(包含对所有 devexpress 库的引用)等等。这些模块看起来像:
- 每个模块都在模块顶部导入所有必要的类和函数 - 例如项目中的每个模块中都有一个包含导入的部分
- 每个函数/类都在本地使用导入,例如在定义后立即导入,并且只导入它们真正需要的东西。
请在下面找到示例。
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/