当前位置: 首页 > 知识库问答 >
问题:

Python中的模块和库有什么区别?

郭思聪
2023-03-14

我有Java的背景,我是Python的新手。在继续之前,我想确保我正确理解Python术语。

我对模块的理解是:一个可以由许多脚本导入的脚本,以便于阅读。就像在java中一样,您有一个类,该类可以由许多其他类导入。

我对库的理解是:库包含许多模块,这些模块因其用途而相互分离。

我的问题是:图书馆就像包裹一样,你有一个包裹,例如叫做食物的包裹,那么:

  • 巧克力。py
  • 糖果。py
  • 比斯切茨。py公司

是否包含在食品包装中?

或者库是否使用软件包,所以如果我们有另一个软件包,请喝:

  • milk.py
  • juice.py

包含在包装中。库包含两个包?

此外,应用程序编程接口(API)通常包含一组库,位于层次结构的顶部:

  1. API
  2. 图书馆
  3. 包裹
  4. 模块
  5. 脚本

所以一个API将由2-5个组成?

共有3个答案

公良扬
2023-03-14

库:它是模块的集合。

(库要么包含内置模块(用C编写)用python编写的模块)。

模块:一组标准化部件或独立单元中的每一个,可用于构建更复杂的结构。

用非正式的语言来说,模块是一组代码行,这些代码行用于特定目的,可以在其他程序中使用,以避免团队干涸(不要重复自己),并专注于主要需求。来源

API是其他应用程序与您的库交互而无需直接访问的接口

包基本上是一个包含文件的目录。

脚本表示单个文件中的一系列命令。

卢知
2023-03-14

只有包和模块具有特定于Python的明确定义的含义。

>

  • API本身并不是代码的集合,它更像是一个“协议”规范,说明了各个部分(通常是库)如何相互通信。python中有几个著名的“标准”API。E、 g.DB API

    在我看来,库是任何不是应用程序的东西——在python中,库是一个模块——通常带有子模块。库的范围是非常可变的,例如python标准库非常庞大(有相当多的子模块),而PyPi中有许多单用途库,例如,集合的后端口。py的OrderedDict

    包是公共名称空间下的python模块集合。在实践中,一个是通过将多个python模块放置在一个目录中,并使用一个特殊的\uu init\uuuuuuuu创建的。py模块(文件)。

    模块是要导入的python代码的单个文件。这有点简化,因为在实践中,相当多的模块会检测何时作为脚本运行,并在这种情况下执行一些特殊的操作。

    脚本是python代码的单个文件,打算作为“主”程序执行。

    如果您有一组跨越多个文件的代码,您可能有一个应用程序而不是脚本。

  • 张璞
    2023-03-14

    来自Python教程-模块

    >

  • 模块:

    模块是包含Python定义和语句的文件。文件名是带有后缀<代码>的模块名。追加py。

    包裹:

    包是一种通过使用“虚线模块名称”构建Python模块名称空间的方法。

    如果您阅读import语句的留档,则会提供更多详细信息,例如:

    Python只有一种类型的模块对象,所有模块都是这种类型的,不管模块是用Python、C还是其他什么实现的。为了帮助组织模块并提供命名层次结构,Python有一个包的概念。

    您可以将包视为文件系统上的目录,将模块视为目录中的文件,但不要将此类比过于字面化,因为包和模块不必源自文件系统。在本文档中,我们将使用目录和文件的这种方便的类比。与文件系统目录一样,包是按层次结构组织的,包本身可能包含子包以及常规模块。

    请务必记住,所有包都是模块,但并非所有模块都是包。或者换句话说,包只是一种特殊的模块。具体地说,任何包含\uu path\uuu属性的模块都被视为包。

    因此,术语模块是指一个特定的实体:它是一个类,其实例是python程序中使用的模块对象。通过类推,它还用于指文件系统中的文件,这些实例是从该文件系统“创建”的。

    “脚本”一词用于指目标是要执行的模块。它与“程序”或“应用程序”的含义相同,但通常用于描述简单的小程序(即一个最多有数百行的文件)。编写脚本需要几分钟或几个小时。

    术语库只是一堆代码的通用术语,旨在为许多应用程序可用。它提供了一些可供特定应用程序使用的通用功能。

    当一个模块/包/其他东西被“发布”时,人们通常将其称为库。库通常包含一个包或多个相关包,但它甚至可能是一个模块。

    库通常不提供任何特定功能,即您不能“运行库”。

    根据上下文的不同,API可以有不同的含义。例如:

    • 它可以定义一个协议,如DB API或缓冲区协议
    • 它可以定义如何与应用程序交互(例如,Python/C API)
    • 当与库/包相关时,它只是该库为其功能(一组函数/类/常量等)提供的接口

    在任何情况下,API都不是python代码。它是一种或多或少可能是正式的描述。

  •  类似资料:
    • 问题内容: 认为标题总结了问题:-) 问题答案: 脚本通常是直接运行的代码,由其本身运行。模块通常是由其他代码段导入的库。 请注意, 没有内部区别 -两者都是可执行的和可导入的,尽管直接执行时库代码通常不执行任何操作(或仅运行其单元测试),而导入设计为脚本的代码将导致其执行,因此通用测试。

    • 问题内容: Python模块和Python包之间有什么区别? 问题答案: 模块是单个文件(一个或多个文件),可在一个导入下导入并使用。例如 包是目录中提供包层次结构的模块的集合。

    • 问题内容: 我已经看到许多项目使用 模块而不是 标准库中的模块。另外,有许多不同的模块。为什么要使用这些替代方法而不是标准库中的替代方法? 问题答案: 是 ,已添加到stdlib中。但是自从2.6中添加以来,它具有处理更多Python版本(2.4+)的优势。 的更新频率也比Python高,因此,如果您需要(或想要)最新版本,则尽可能使用它自己。 我认为,一种好的做法是将其中一个作为后备。

    • 问题内容: 我在只有包的地方使用Java。我知道还有其他编程语言也包含模块。 有什么不同? 问题答案: 很难比较空白中的语义。(您还说什么其他语言?)“模块”可能类似于Java类,Java包或完全其他的东西,具体取决于该其他语言。通常,由于“模块”通常来自过程语言,因此我倾向于讲Java类,但是我认为那一线 很 模糊,您可以令人信服地争论一下程序包。

    • 当您想将库添加到您的项目时,IntelliJ IDEA中的“模块依赖项”和“库”有什么区别?此外,当您将库添加到IntelliJ IDEA中的“模块依赖项”时,“导出”复选框是什么? 在每种方式中,类和代码是如何包含在所包含的

    • 我正在从Java9的新特性中学习Java9,讨论中的一个热门话题是模块化JDK。 JAR文件是模块吗? 模块与JAR文件有何不同?