簡體   English   中英

“Python實現”與“Python發布”與Python本身相比?

[英]“Python Implementation” vs. “Python distribution” vs. Python itself?

Python世界的新手。 “Python Implementation”與“Python發布”與Python本身有什么區別? 例如:

有什么區別? 我可以同時使用所有嗎? 這個術語並沒有真正詳細闡述。

“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本身就是一種編程語言。 它有各種實現,允許您運行其中編寫的程序。 為了給你一個更好的主意,msvc,clang,gcc是C的實現。這里有一些python實現:

  • CPython:這是默認設置,如果您不知道,應該使用什么。
  • Jython:在java中實現,允許你使用java api。
  • IronPython:.net的實現,允許您使用.net api。
  • PyPy:JIT實現。

分發是與一些包捆綁在一起的python實現。 如果再一次,你不知道這個,只需使用vanilla python,即默認下載。

當大多數人松散地談論“Python本身”時,他們的意思是“基礎Python系統” - 解釋器和標准工具箱 - 與任何第三方工具箱不同。 例如,您可能會說,“要運行我的基於Python的軟件,您需要自己安裝Python,以及來自numpy.org的第三方工具箱NumPy”。 前者是獲得“hello world”的傳統最小值,后者增加了更專業的功能。

“發行版”是您下載的“一堆文件”。 特定的“Python發行版”可能只包含特定版本的“Python本身”(就像您從python.org獲得的發行版)。 或者它可能更具包容性:為了節省用戶安裝第三方依賴項的單獨工作,許多人發布的“Python發行版”不僅僅包含基本系統。 例如,他們可能會提供已包含流行的第三方軟件包(如NumPy和SciPy)的發行版(示例:WinPython,PortablePython,Enthought,Anaconda等的發行版)

至於短語“Python實現”:正如其他回答者已經提到過的那樣,通常用來強調特定的Python發行版在解釋器被編入“引擎蓋”的方式上與其他發行版不同的事實。 官方python.org產品用C實現,因此是“CPython”。 還有使用Java制作的Python實現。 要將所有術語組合在一起,您可以下載PyPy發行版,這是一個用“Python本身”編寫的Python實現;-)

從我的理解(在我有限的知識)。

  • Python本身是開發團隊提供的核心功能和模塊的原始集合
  • 實現是Python的重要修改版本,通常以不同方式編譯
  • 發布是常規Python,附帶一些您可以自己安裝的附加模塊

您在計算機上安裝的文件集是一個分發版

分配是一個實現的實例。 實現的例子是CPython,PyPy,Twisted等。有關更多實現,請參閱http://wiki.python.org/moin/Pythonimplementations

Python本身就是這個實現和庫的環境的名稱。

值得注意的是,雖然Python中的“Distribution”通常是指Python語言和捆綁模塊的版本,可以下載和安裝,但在某些情況下它也可以引用“分發包”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM