首頁  >  文章  >  後端開發  >  python為什麼跨平台

python為什麼跨平台

(*-*)浩
(*-*)浩原創
2019-05-17 13:39:0814938瀏覽

python可以跨平台的原因:原始碼跨平台;Python指令最終會轉換成c語言指令集,然後c語言的指令集再編譯為機器碼,最後執行。跨平台都是有限的:1、不能有windows特殊的東西;2、編碼方式要相容。

python為什麼跨平台

跨平台概念是軟體開發中重要的概念,即不依賴作業系統,也不依賴硬體環境。

一個作業系統下開發的應用,放到另一個作業系統下方依然可以運作。相對而言如果某種電腦語言不用修改程式碼即可做到高度跨平台,那麼此語言就越抽象,硬體控制力就越低,只適合開發高度抽象的模型系統。諸如java,delphi和易語言、Python,都已做到了跨平台。它們將可以在多種系統下開發,運行和維護。

大部分電腦語言從絕對意義而言,都是跨平台的:因為都是以高級的、人類可讀的方式來對CPU發號指令,這樣也就沒必要依賴於任何作業系統。但如果要用系統的零件工具箱,來新建使用者圖形介面(GUI),就可能會用到開發者特定係統中的API函數或函式庫類別。雖然C 是跨平台的,但Windows下用到Win32 API的C 程序,一般就不能在Unix機器上編譯。不同編譯器對語言規範的解釋也有所差異。這樣的話,在針對不同系統進行建置之前,程式就得加以考慮。

一些如Java這樣的語言,從一開始就意識到要在各個平台下運行,所以跨平台在其平台的本地語言環境中已經實現。例如,Java可以跨平台使用,正是由於Swing函式庫在許多平台下的實作。類似的,能進行跨平台的文件訪問,是因為有各自平台下文件訪問的庫。以此類推,各種跨平台問題,都需要各自的本地庫來解決。 wxWidgets框架就是這樣的一個跨平台庫,根據不同的跨平台問題,提供了許多不同的解決方案;類似的庫有許多,可以根據不同語言的跨平台開發,而採用相應的庫。

針對每種作業系統、CPU,而提供並測試各自的編譯版本,這種做法的可行性很小;開源軟體則允許使用者自己來編譯目的碼(object code),這樣在跨平台方面更好一些。類似的,那些解釋型語言,或需要虛擬機器的語言,也更符合跨平台的要求,因為使用者也要自行編譯。 Sun公司的Java虛擬機器Hotspot,只針對幾種而非全部平台,提供編譯好的二進位檔。例如,Sun對於GNU/Linux,只支援i386平台,但如果誰在PowerPC或SPARC電腦上執行Linux,就必須自己編譯本地的機器碼(machinecode),或是使用第三方軟體,才能執行Java程式。

許多API(應用程式介面)都依賴平台。 OpenGL可以看作是跨平台的,因為其不依賴任何特定的作業系統、CPU架構或某個牌子的圖形設備。特定平台的API可以在其他系統上作為相容層而新建,例如WINE的庫,Windows程式就可以在UNIX系統上運作。

另外許多程式語言還有跨平台的擴展以及中間件,這樣程式設計師對於同樣的原始碼,只要進行一點小修改,就可以在不同平台下編譯/運行,例如Qt和wxWidgets 。

Python什麼可以跨平台?

因為Python是將這些自己的指令,最終轉換成了c語言指令集,然後再c語言的指令集再進行編譯為機器碼,然後運行,這也是為什麼python的性能差的原因了(當然,有很多提速的辦法)。

當然這也是有限制的:

1、不能有windows特殊的東西;

2、編碼方式要相容。

支援常見的主流平台,如AIX、HPUX、Solaris、Linux、Windows等,除Windows外常見的Unix、Linux平台均附有原生的Python,但版本一般較低。關於跨平台和他跨平台語言一樣,要注意有些個別模組是單一平台特有的,整體的跨平台性還是很好的,不必為適應多平台寫多套代碼。

但這不是說一點限制都沒有:首先,同一個版本的中間文件.py和.pyc以及.pyo是跨平台的;其次,PC與移動終端,如:手機、Pad不可跨平台(原因見下一條);最後,不能跨處理器架構,如:Intel與ARM,64位元與32位元。

以上是python為什麼跨平台的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn