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