我已经阅读了python的文档以及关于package, library, module and script
含义的许多来源,我得到了一些,我知道这是一个基本问题,但它很混乱,非常重要的是要知道它们之间的区别。
我知道这是一个基本问题,但请不要投票,因为这肯定会对其他人有用。
包:其中包含__init__.py
个文件
模块:由python代码组成的Python文件
任何人都可以轻松解释而不会混淆。
答案 0 :(得分:0)
这对于首发来说如何:
module通常是一段Python代码(即脚本),它不会被顶级PVM解释/执行,即使用__name ='__main__'
,但是从调用脚本导入。因此,模块中的定义存在于其自己的命名空间中。
换句话说,这意味着您的任何脚本都可以从代码的其他部分导入,从而充当模块。
答案 1 :(得分:0)
它们基本上都是相同的东西,包含python代码的文件或文件集,而python使它们之间的区别透明,因此不那么重要。但它们的确含义略有不同。
“脚本”是主要用于执行的.py文件,而“库”是主要用于由另一个脚本导入的.py文件。但是,单个.py文件可以并且通常同时写为脚本和库。 timeit模块是这种脚本/库二元性的一个例子,如果你从命令行执行timeit模块,它需要一个包含你想要微基准的python代码的命令行参数;但您也可以将timeit模块导入微基准测试功能或将字符串导入eval / exec-ed。
模块与库是一样的,因为它主要用于导入,但有时人们使用单词模块来引用.py文件,而不必暗示文件是可执行的(因此是脚本)也不是导入 - (因此是一个图书馆)。如果您不确定文件是要执行还是导入,则使用它是一个更安全的词;或者如果你想减少对文件性质的重视;或者如果要引用包含可执行脚本和库的文件集合以进行导入。在这个意义上,这是更中性的词。
包具体是指a folder containing an __init__.py
和至少一个或多个其他.py文件(从技术上讲,只包含 init .py的文件夹也是一个包,但它们应该只是转换成单个.py模块)。因此,包是比模块/库更高的层次结构。
答案 2 :(得分:0)
我想你需要一个非常基本的解释。
您自己写的所有内容都可以称为脚本。
您在脚本中导入的所有内容都可以称为模块。还记得你可以把你的脚本作为一个可导入的模块,通过把它放在一个python路径的目录中并在其中包含一个__init__.py
文件,考虑到你的脚本文件不包含__name='__main__'
正如克劳斯所说。现在这个目录可以被称为包,如Lie所述。
另一种表示形式 - 包或库是pypi或其他git存储库中可用的源文件集,可以针对&安装到本地python版本,可以作为模块导入脚本。
总的来说,你可以编写一个脚本,创建一个包(库) 同样,在pypi中托管它,使用pip,import下载并安装到你的python 作为另一个脚本的模块。