為什么很多人喜歡學(xué)習Python有哪些優(yōu)點(diǎn)呢?
說(shuō)起目前最火的編程語(yǔ)言,Python肯定名列三甲,而且近年來(lái)頗有超越長(cháng)期霸占排行榜榜首Java的趨勢。許多轉行IT行業(yè)的人,也都把Python作為入門(mén)語(yǔ)言,其實(shí)如果讓小課選的話(huà),我也會(huì )選擇Python。那么,Python究竟有什么魅力呢?它的優(yōu)缺點(diǎn)都有哪些呢?
優(yōu)點(diǎn)
簡(jiǎn)單易學(xué)
作為一種面向對象、解釋型的腳本語(yǔ)言,Python同時(shí)也是一種功能強大而完善的通用型語(yǔ)言。相比于其他編程語(yǔ)言(比如 Java),Python 代碼非常簡(jiǎn)單,上手非常容易。
開(kāi)源
Python 是 FLOSS(自由/開(kāi)源源碼軟件)之一,簡(jiǎn)單地理解就是,用戶(hù)使用 Python 進(jìn)行開(kāi)發(fā)和發(fā)布自己編寫(xiě)的程序,不需要支付任何費用,也不用擔心版權問(wèn)題,即使作為商業(yè)用途,Python 也是免費的。
開(kāi)源正在成為軟件行業(yè)的一種發(fā)展趨勢,現在有很多商業(yè)軟件公司都開(kāi)始將自己的產(chǎn)品變成開(kāi)源的(例如 Java)。也許,Python 的開(kāi)源正是它如此優(yōu)秀的原因之一,因為會(huì )有這么一群人,他們希望看到一個(gè)更加優(yōu)秀的 Python,從而為了這個(gè)目標,不斷地對 Python 進(jìn)行創(chuàng )造,不斷地改進(jìn)。
解釋型語(yǔ)言
一個(gè)用編譯型語(yǔ)言(如 C 或 C++)寫(xiě)的程序,可以從源文件轉換到一個(gè)計算機使用的語(yǔ)言。這個(gè)過(guò)程主要通過(guò)編譯器完成。當運行程序的時(shí)候,我們可以把程序從硬盤(pán)復制到內存中并且運行。
而 Python 語(yǔ)言寫(xiě)的程序,則不需要編譯成二進(jìn)制代碼,可以直接從源代碼運行程序。在計算機內部,由 Python 解釋器把源代碼轉換成字節碼的中間形式,然后再把它翻譯成計算機使用的機器語(yǔ)言并運行。
事實(shí)上,由于不再擔心如何編譯程序,使得使用 Python 變得更加簡(jiǎn)單,我們只需要將 Python 程序復制到另外一臺計算機上,它就可以工作了。因此,Python 程序更加易于移植。
可移植性
由于 Python 是開(kāi)源的,它已經(jīng)被移植到許多平臺上。如果能夠避免使用依賴(lài)系統的特性,那就意味著(zhù),所有 Python 程序都無(wú)需修改就可以在好多平臺上運行,包括 Linux 、Windows、FreeBSD、Solaris 等等,甚至還有 PocketPC、Symbian 以及 Google 基于 Linux 開(kāi)發(fā)的 Android 平臺。
解釋型語(yǔ)言幾乎天生就是跨平臺的。Python 作為一門(mén)解釋型的語(yǔ)言,它天生具有跨平臺的特征,只要為平臺提供了相應的 Python 解釋器,Python 就可以在該平臺上運行。
豐富強大的庫
Python 語(yǔ)言號稱(chēng)自帶電池(Battery Included),寓意是 Python 語(yǔ)言的類(lèi)庫非常的全面,包含了解決各種問(wèn)題的類(lèi)庫。無(wú)論實(shí)現什么功能,都有現成的類(lèi)庫可以使用。如果一個(gè)功能比較特殊,標準庫沒(méi)有提供相應的支持,那么,很大概率也會(huì )有相應的開(kāi)源項目提供了類(lèi)似的功能。合理使用 Python 的類(lèi)庫和開(kāi)源項目,能夠快速的實(shí)現功能,滿(mǎn)足業(yè)務(wù)需求。
可擴展性
Python 的可擴展性體現為它的模塊,Python 具有腳本語(yǔ)言中最豐富和強大的類(lèi)庫,這些類(lèi)庫覆蓋了文件 I/O、GUI、網(wǎng)絡(luò )編程、數據庫訪(fǎng)問(wèn)、文本操作等絕大部分應用場(chǎng)景。
Python 可擴展性一個(gè)最好的體現是,當我們需要一段關(guān)鍵代碼運行的更快時(shí),可以將其用 C 或 C++ 語(yǔ)言編寫(xiě),然后在 Python 程序中使用它們即可。
雖然Python有很多優(yōu)點(diǎn),但是也并不是沒(méi)有缺點(diǎn),最主要的缺點(diǎn)有以下幾個(gè):
Python 的執行速度不夠快。相比于比 Java、C、C++ 等程序,Python 的運行效率要稍微慢些。不過(guò),這也不是一個(gè)很?chē)乐氐膯?wèn)題,一方面,網(wǎng)絡(luò )或磁盤(pán)的延遲,會(huì )抵消掉部分 Python 本身消耗的時(shí)間;另一方面,因為 Python 特別容易和 C 結合起來(lái),因此,我們可以通過(guò)分離一部分需要優(yōu)化速度的應用,將其轉換為編譯好的擴展,并在整個(gè)系統中使用 Python 腳本將這部分應用連接起來(lái),以提高程序的整體效率。
Python 的 GIL 鎖限制并發(fā):Python 的另一個(gè)大問(wèn)題是,對多處理器支持不好。GIL 是指 Python 全局解釋器鎖(Global Interpreter Lock),當 Python 的默認解釋器要執行字節碼時(shí),都需要先申請這個(gè)鎖。這意味著(zhù),如果試圖通過(guò)多線(xiàn)程擴展應用程序,將總是被這個(gè)全局解釋器鎖限制。
不過(guò),我們也可以使用多進(jìn)程的架構來(lái)提高程序的并發(fā),也可以選擇不同的 Python 實(shí)現來(lái)運行我們的程序。
源代碼加密困難:不像編譯型語(yǔ)言的源程序會(huì )被編譯成目標程序,Python 直接運行源程序,因此對源代碼加密比較困難。
總而言之,作為一種編程語(yǔ)言,Python在兼顧質(zhì)量和效率方面有很好的平衡,尤其對新手而言,Python是一種十分友好的語(yǔ)言。