在Python中导入模块最具蟒蛇风格的方式是什么

2022-03-31 00:00:00 python python-import

问题描述

有没有人能给我提个建议,用哪种方法在Python中导入模块最具蟒蛇气质? 让我解释一下-我已经阅读了大量的Python代码,并找到了如何导入模块的几种不同方法,或者更准确地说-何时导入:

  1. 使用一个模块/多个模块,其中包含了整个项目所需的所有导入(第三方模块),因此所有的导入集中在几个模块中,便于维护。当任何单个模块需要导入任何模块时,它会向引用模块请求它。 例如,在我们的项目中,我们分离了名为‘References’的级别,因此它包含诸如‘system.py’(包含对所有系统库的引用)、‘Platform.py’(包含对所有平台库的引用)、‘DevExpress.py’(包含对所有DevExpress库的引用)等模块。这些模块如下所示:
  2. 每个模块在模块的顶部导入所有必要的类和函数-例如,项目中的每个模块中都有一个包含导入的部分
  3. 每个函数/类在本地使用IMPORT,例如,在定义之后立即使用IMPORT,并且只导入它们真正需要的内容。

请查看下面的示例。

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’和‘FORM...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中导入模块最具蟒蛇风格的方式是什么?


解决方案

它真的没关系,只要您不from ... import *。剩下的都是品味和绕过周期性进口问题。PEP 8说明您应该在脚本的顶部导入,但即使是这样也不是一成不变的。

相关文章