当前位置: 首页 > 面试题库 >

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

姜松
2023-03-14
问题内容

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

  1. 使用一个模块/几个模块,其中包括整个项目所需的所有导入(第三方模块),因此所有导入都集中在几个模块中,因此易于维护导入。当任何单个模块需要导入任何模块时,都会询问引用模块。例如,在我们的项目中,我们分离了名为“引用”的级别,因此它包含诸如“ system.py”(包含对所有系统库的引用),“ platform.py”(包含对所有平台库的引用),“ devexpress.py”之类的模块’(包含对所有devexpress库的引用),依此类推。这些模块如下所示:
  2. 每个模块都在模块顶部导入所有必需的类和功能-例如,在项目中的每个模块中都有一个带有导入的部分
  3. 每个函数/类都在本地使用导入,例如,紧接定义之后,仅导入它们真正需要的东西。

请在下面找到样本。

#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模块永远不会导入两次,即该模块中的代码仅在首次导入时才执行。随后的import语句只需将模块添加到导入范围即可。 我有一个名为“ TiledConvC3D.py”的模块,但似乎已多次导入。我使用pdb在该模块的代码顶部打印堆栈。 这是从第一次执行模块开始的堆栈跟踪的结尾: 它将继续执行多次。但是,第二次调用的完整堆栈跟踪不会显示对的任何调用,因此不应执行这些执行:

  • 本文向大家介绍Python创建模块及模块导入的方法,包括了Python创建模块及模块导入的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python创建模块及模块导入的方法。分享给大家供大家参考。具体分析如下: python学习手册中写道: 定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块。 比如

  • 问题内容: 我有一个Python脚本,该脚本接受一个整数列表作为输入,我需要一次处理四个整数。不幸的是,我无法控制输入,或者将其作为四元素元组的列表传递。目前,我正在以这种方式对其进行迭代: 不过,这看起来很像“C-think”,这让我怀疑有一种更像蟒蛇的方式来处理这种情况。列表在迭代后被丢弃,因此不需要保留它。也许这样更好? 不过,仍然感觉不太正确。 问题答案: 从Python的itertool

  • 问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另

  • 问题内容: 我是Python的新手,因为我想扩展使用R学习的技能。在RI中,往往会加载一堆库,有时会导致函数名冲突。 什么是Python最佳实践。我看到了一些特定的变体,但我看不出它们之间的区别 ,和 前两者之间有什么区别,我应该只导入我需要的东西吗?同样,对于制作小型程序来处理数据和计算简单统计信息的人来说,最糟糕的后果是什么。 更新 我找到了这个出色的指南。它解释了一切。 问题答案: 在pan

  • 问题内容: 我正在尝试使用该软件包在R中导入python模块。该模块可以在这里找到。我克隆了存储库并运行成功。如果打开python shell,则可以导入。但是,当我尝试将其导入RStudio时,出现以下错误: 我在macOS Sierra版本10.12.6上并通过Anaconda安装了python 3.6。我也尝试过给出python的路径为: 当我从终端运行python时,我得到: 不确定pyt