我已经阅读了 python 的文档和许多关于 含义的资料package, library, module and script
,我得到了一些,我知道这是一个基本问题,但它令人困惑并且了解它们之间的区别非常重要。我知道这是基本问题,但请不要投反对票,因为肯定这对其他人有用。
包:有 __init__.py
文件
模块:由 Python 代码组成的 Python 文件
任何人都可以很容易地解释而不会混淆它们。
我已经阅读了 python 的文档和许多关于 含义的资料package, library, module and script
,我得到了一些,我知道这是一个基本问题,但它令人困惑并且了解它们之间的区别非常重要。我知道这是基本问题,但请不要投反对票,因为肯定这对其他人有用。
包:有 __init__.py
文件
模块:由 Python 代码组成的 Python 文件
任何人都可以很容易地解释而不会混淆它们。
对于初学者来说,这个怎么样:
一个模块通常是一段 Python 代码(即脚本),它不是由 PVM 在顶层解释/执行的,即 with __name ='__main__'
,而是从调用脚本中导入的。因此,来自模块的定义存在于它自己的命名空间中。
换句话说,您的任何脚本都可以从您的其他代码片段中导入,从而充当模块。
它们基本上都意味着相同的东西,一个文件或一组文件包含 python 代码,python 使它们之间的区别变得透明,因此不那么重要。但它们的含义确实略有不同。
“脚本”是主要用于执行的 .py 文件,而“库”是主要用于由另一个脚本导入的 .py 文件。但是,单个 .py 文件可以并且通常同时作为脚本和库编写。timeit 模块就是这种脚本/库对偶性的一个例子,如果你从命令行执行 timeit 模块,它会接受一个命令行参数,其中包含你想要进行微基准测试的 python 代码;但您也可以将 timeit 模块导入微基准测试函数或要评估/执行的字符串。
模块与库相同,因为它主要用于导入,但有时人们使用模块一词来引用 .py 文件,而不必暗示该文件是否可执行(因此是脚本)或可导入(因此是图书馆)。如果您不确定文件是要执行还是要导入,使用这个词会更安全;或者如果您想减少对文件性质的重视;或者,如果您想引用包含可执行脚本和库的文件集合以进行导入。从这个意义上说,它是更中性的词。
包专门指a folder containing an __init__.py
至少一个或多个其他 .py 文件(从技术上讲,仅包含init .py 的文件夹也是一个包,但它们应该只转换为单个 .py 模块)。因此,包是比模块/库更高的层次结构。
我想你需要一个非常基本的解释。
您自己编写的所有内容都可以称为脚本。
您在脚本中导入的所有内容都可以称为modules。还请记住,您可以将脚本作为可导入的模块,方法是将其放入 python 路径中的目录并在其中包含一个__init__.py
文件,考虑到您的脚本文件不包含__name='__main__'
Klaus 提到的。现在这个目录可以像Lie 所说的那样作为一个包来调用。
另一种表示 -包或库是 pypi 或其他 git 存储库中可用的源文件集,可以针对本地 python 版本构建和安装,并且可以作为脚本中的模块导入。
总的来说,您可以编写一个脚本,创建一个相同的包(库),将其托管在 pypi 中,使用 pip 将其下载并安装到您的 python 中,作为模块导入到另一个脚本中。