“Python Implementation”与“Python distribution”与“Python本身”有何区别?

17

这个网站提供了“实现”的合理定义。 - kdopen
6个回答

28
“Python本身”是一种柏拉图式的理念。大致上来说,它是一个规范,尽管与其他语言(如C)一样,它没有“真正”的规范。 Python语言的行为是由在python.org上提供的文档所定义的。任何按照文档说明执行的操作都将被视为是Python。
Python的实现是提供该行为的实际程序。最常见的是CPython,这是您从python.org下载的内容。您提到的“替代方案”页面中发现的其他实现也“算作Python”,因为它们提供文档化行为(有时有一些警告),但是它们是独立编写的,并且可能在其他平台上运行得更快、更慢或以不同方式在后台运行等。
Python的发行版是一个捆绑包,其中包含Python的实现以及一堆库或工具。理论上,Python的发行版可以使用任何实现,尽管我所知道的所有发行版都使用CPython。从python.org下载的内容也可以被视为是一个发行版(不包含任何“额外”的最小发行版)。
您可以通过类比来理解它,例如像烤箱这样的物理机器。“Python本身”或“Python语言”就像对该机器所做的事情的描述:它加热,您可以转动旋钮设置温度等。您无法使用描述来烹饪任何东西;您必须首先建造一个真正的烤箱。 Python的实现就像是您建造的真正的烤箱,只要它执行了烤箱应该做的事情,它就是一个烤箱,但是构建正确的烤箱可能有很多方法(如木材燃烧、燃气燃烧、太阳能发电等)。发行版就像带有其他您经常想要与其一起使用的内容的烤箱-比如完整配备厨房,其中包括锅、平底锅、铲子和搅拌碗以及烤箱本身。您确实可以同时使用所有三种方式,并且在某种意义上,您必须这样做。如果没有使用它的实现,就不可能使用“Python编程语言”,这就像说您想“驾驶汽车”,但不驾驶任何特定型号的汽车一样。同样地,如果您认为python.org上的“裸”下载也是一种发行版,那么您实际上无法使用实现而不获取其作为分发的一部分。
实际上,大多数实用Python的人都使用CPython(事实上的标准实现),所以真正的选择在于不同版本的分发。在这些分发中,您主要根据需要的额外功能进行选择。您可以选择使用来自python.org的“裸”分发,然后自己安装软件包,或者如果您计划进行科学/分析计算,则可以选择针对此目的的分发(例如Anaconda或Canopy)。

你的第一段话在哲学上非常深刻。就像手淫与性行为之间的关系一样,Python本身与Python发行版之间也有着类似的联系。感谢你的文章。虽然你的回答太长了,我不好意思给你点赞,但你应该把它写成Python代码。哈哈,开个玩笑。 - Kardo Paska

4

Python本身是一种编程语言。它有各种实现,可以让您运行用它编写的程序。为了给您更好的想法,msvc、clang、gcc都是C语言的实现。以下是一些Python实现:

  • CPython:这是默认的实现,如果您不知道该使用哪个,请使用此实现。
  • Jython:Java实现,允许您使用Java API。
  • IronPython:.NET实现,允许您使用.NET API。
  • PyPy:JIT实现。

发行版是捆绑有一些软件包的Python实现。如果您再次不知道这是什么,请使用vanilla Python,也就是默认下载版本。


2
当大多数人非正式地谈论“Python本身”时,他们指的是“基本Python系统”——即解释器和标准工具箱,而不是任何第三方工具箱。例如,您可能会说:“要运行我的基于Python的软件,您需要安装Python本身以及来自numpy.org的第三方工具箱NumPy。”前者是传统的最低限度,可以达到“你好,世界”,后者增加了更专业的功能。
“发行版”是“您下载的一堆文件”。特定的“Python发行版”可能仅包含特定版本的“Python本身”(例如从python.org获得的分发版)。或者它可能更具包容性:为了使用户省去安装第三方依赖项的单独工作,许多人发布“Python发行版”,其中包含不仅基本系统而且更多的内容。例如,他们可能提供一个包含流行第三方包如 NumPy 和 SciPy 的分发版(示例:WinPython、PortablePython、Enthought、Anaconda 等)。
至于“Python实现”这个短语:正如其他回答者已经提到的那样,通常用于强调一个特定的 Python 发行版与其他发行版在“引擎盖下”解释器的编码方式上的区别。官方的 python.org 提供的是用 C 实现的,因此称为“CPython”。还有用 Java 制作的 Python 实现。为了将您所有的术语综合起来,您可以下载 PyPy 发行版,它是用“Python本身”编写的 Python 实现;-)

0

就我目前的所了解到的(基于我的有限知识)。

  • Python本身是由开发团队提供的一组核心功能和模块的原始集合
  • 实现通常是对Python进行了重大修改的版本,通常会有不同的编译方式
  • 发行版是常规的Python,它附带了一些额外的模块,你也可以自己安装这些模块

0

你在计算机上安装的一组文件称为“发行版”。

“发行版”是“实现”的一个实例。例如CPython、PyPy、Twisted等都是实现的例子。更多实现请参见http://wiki.python.org/moin/Pythonimplementations

Python本身是给这些实现和库命名的。


0
值得注意的是,尽管 Python 中的“Distribution”通常指的是可以下载和安装的 Python 语言版本和捆绑模块,但在某些情况下它也可以指代"分发包(Distribution Package)"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接