【发布时间】:2011-09-16 08:40:19
【问题描述】:
谁能建议我在 python 中导入模块的最 Pythonic 方式是什么? 让我解释一下——我已经阅读了很多 python 代码,发现了几种不同的方式来导入模块,或者更准确地说——何时导入:
- 使用一个模块/几个模块,其中包括整个项目所需的所有导入(第三方模块),因此所有导入都集中在几个模块中,因此易于维护导入。当任何单个模块需要导入任何模块时,它会要求引用模块。 例如,在我们的项目中,我们分离了名为“references”的级别,因此它包含诸如“system.py”(包含对所有系统库的引用)、“platform.py”(包含对所有平台库的引用)、“devexpress.py”之类的模块'(包含对所有 devexpress 库的引用)等等。这些模块看起来像:
- 每个模块在模块顶部导入所有必要的类和函数 - 例如。项目中的每个模块中都有一个导入部分
- 每个函数/类都在本地使用导入,例如在定义后立即导入它们真正需要的东西。
请在下面找到示例。
1 个示例导入模块 - 只有“import”和“from ... import ...”语句(没有任何方法或类):
#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 带有“import”和“from ... import ...”的模块以及方法和类:
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的方式是什么?
【问题讨论】:
标签: python python-import