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