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