自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不老的新丁 Python何以讓人著迷

開發(fā) 后端
為什么要學(xué)習(xí)Python?Python的特點是什么?這里借用一位大師的話:他的語言是與時代同步,而Python則是未雨綢繆,而且計劃得頗為出色。下面就讓我們走進(jìn)Python的世界,感受Python的力量。

Python是一門美麗的語言。它簡單易學(xué),跨平臺,而且運轉(zhuǎn)良好。達(dá)成了許多Java一直求索的技術(shù)目標(biāo)。一言以蔽之就是:其他的語言是與時代同步,而Python則是未雨綢繆,而且計劃得頗為出色。當(dāng)然,這句話出自一位大師之言。為什么要學(xué)習(xí)Python呢?Python果真就有這么大的魅力嗎?

51CTO推薦閱讀:全能選手 看看Python應(yīng)乎潮流的72變

特點

盡管Python已經(jīng)流行了超過15年,但是一些人仍舊認(rèn)為相對于通用軟件開發(fā)產(chǎn)業(yè)而言,它還是個新丁。我們應(yīng)當(dāng)謹(jǐn)慎地使用“相對”這個詞,因為“網(wǎng)絡(luò)時代”的程序開發(fā),幾年看上去就像幾十年。

當(dāng)人們詢問:“什么是Python?”的時候,很難用任何一個具象來描述它。人們更傾向于一口氣不加思索地說出他們對Python的所有感覺,Python是___(請?zhí)顚懀_,這些特點究竟又是什么呢?為了讓你能知其所以然,我們下面會對這些特點進(jìn)行逐一地闡釋。

高級

伴隨著每一代編程語言的產(chǎn)生,我們會達(dá)到一個新的高度。匯編語言是上帝獻(xiàn)給那些掙扎在機器代碼中的人的禮物,后來有了FORTRAN、C和Pascal語言,它們將計算提升到了嶄新的高度,并且開創(chuàng)了軟件開發(fā)行業(yè)。伴隨著C語言誕生了更多的像C++、Java這樣的現(xiàn)代編譯語言。我們沒有止步于此,于是有了強大的、可以進(jìn)行系統(tǒng)調(diào)用的解釋型腳本語言,例如Tcl、Perl和Python。

這些語言都有高級的數(shù)據(jù)結(jié)構(gòu),這樣就減少了以前“框架”開發(fā)需要的時間。像Python中的列表(大小可變的數(shù)組)和字典(哈希表)就是內(nèi)建于語言本身的。在核心語言中提供這些重要的構(gòu)建單元,可以鼓勵人們使用它們,縮短開發(fā)時間與代碼量,產(chǎn)生出可讀性更好的代碼。

在C語言中,對于混雜數(shù)組(Python中的列表)和哈希表(Python中的字典)還沒有相應(yīng)的標(biāo)準(zhǔn)庫,所以它們經(jīng)常被重復(fù)實現(xiàn),并被復(fù)制到每個新項目中去。這個過程混亂而且容易產(chǎn)生錯誤。C++使用標(biāo)準(zhǔn)模版庫改進(jìn)了這種情況,但是標(biāo)準(zhǔn)模版庫是很難與Python內(nèi)建的列表和字典的簡潔和易讀相提并論的。

面向?qū)ο?/strong>

建議:面向?qū)ο缶幊虨閿?shù)據(jù)和邏輯相分離的結(jié)構(gòu)化和過程化編程添加了新的活力。面向?qū)ο缶幊讨С謱⑻囟ǖ男袨?、特性以及?或功能與它們要處理或所代表的數(shù)據(jù)結(jié)合在一起。Python的面向?qū)ο蟮奶匦允桥c生俱來的。然而,Python絕不想Java或Ruby僅僅是一門面向?qū)ο笳Z言,事實上它融匯了多種編程風(fēng)格。例如,它甚至借鑒了一些像Lisp和Haskell這樣的函數(shù)語言的特性。

可升級

大家常常將Python與批處理或Unix系統(tǒng)下的shell相提并論。簡單的shell腳本可以用來處理簡單的任務(wù),就算它們可以在長度上(無限度的)增長,但是功能總會有所窮盡。Shell腳本的代碼重用度很低,因此,你只能止步于小項目。實際上,即使一些小項目也可能導(dǎo)致腳本又臭又長。Python卻不是這樣,你可以不斷地在各個項目中完善你的代碼,添加額外的新的或者現(xiàn)存的Python元素,也可以重用您腦海中的代碼。Python提倡簡潔的代碼設(shè)計、高級的數(shù)據(jù)結(jié)構(gòu)和模塊化的組件,這些特點可以讓你在提升項目的范圍和規(guī)模的同時,確保靈活性、一致性并縮短必要的調(diào)試時間。

“可升級”這個術(shù)語最經(jīng)常用于衡量硬件的負(fù)載,通常指為系統(tǒng)添加了新的硬件后帶來的性能提升。我們樂于在這里對這個引述概念加以區(qū)分,我們試圖用“可升級”來傳達(dá)一種觀念,這就是:Python提供了基本的開發(fā)模塊,你可以在它上面開發(fā)你的軟件,而且當(dāng)這些需要擴展和增長時,Python的可插入性和模塊化架構(gòu)則能使你的項目生機盎然和易于管理。

可擴展

就算你的項目中有大量的Python代碼,你也依舊可以有條不紊地通過將其分離為多個文件或模塊加以組織管理。而且你可以從一個模塊中選取代碼,而從另一個模塊中讀取屬性。更棒的是,對于所有模塊,Python的訪問語法都是相同的。不管這個模塊是Python標(biāo)準(zhǔn)庫中的還是你一分鐘之前創(chuàng)造的,哪怕是你用其他語言寫的擴展都沒問題!借助這些特點,你會感覺自己根據(jù)需要“擴展”了這門語言,而且你已經(jīng)這么做了。

代碼中的瓶頸,可能是在性能分析中總排在前面的那些熱門或者一些特別強調(diào)性能的地方,可以作為Python擴展用C重寫。。需要重申的是,這些接口和純Python模塊的接口是一模一樣的,乃至代碼和對象的訪問方法也是如出一轍的。唯一不同的是,這些代碼為性能帶來了顯著的提升。自然,這全部取決你的應(yīng)用程序以及它對資源的需求情況。很多時候,使用編譯型代碼重寫程序的瓶頸部分絕對是益處多多的,因為它能明顯提升整體性能。

程序設(shè)計語言中的這種可擴展性使得工程師能夠靈活附加或定制工具,縮短開發(fā)周期。雖然像C、C++乃至Java等主流第三代語言(3GL)都擁有該特性,但是這么容易地使用C編寫擴展確實是Python的優(yōu)勢。此外,還有像PyRex這樣的工具,允許C和Python混合編程,使編寫擴展更加輕而易舉,因為它會把所有的代碼都轉(zhuǎn)換成C語言代碼。因為Python的標(biāo)準(zhǔn)實現(xiàn)是使用C語言完成的(也就是CPython),所以要使用C和C++編寫Python擴展。Python的Java實現(xiàn)被稱作Jython,要使用Java編寫其擴展。***,還有IronPython,這是針對.NET或Mono平臺的C#實現(xiàn)。你可以使用C#或者VB.Net擴展IronPython。

#p#

可移植性

在各種不同的系統(tǒng)上可以看到Python的身影,這是由于在今天的計算機領(lǐng)域,Python取得了持續(xù)快速的成長。因為Python是用C寫的,又由于C的可移植性,使得Python可以運行在任何帶有ANSIC編譯器的平臺上。盡管有一些針對不同平臺開發(fā)的特有模塊,但是在任何一個平臺上用Python開發(fā)的通用軟件都可以稍事修改或者原封不動的在其他平臺上運行。這種可移植性既適用于不同的架構(gòu),也適用于不同的操作系統(tǒng)。

易學(xué)

Python關(guān)鍵字少、結(jié)構(gòu)簡單、語法清晰。這樣就使得學(xué)習(xí)者可以在相對更短的時間內(nèi)輕松上手。對初學(xué)者而言,可能感覺比較新鮮的東西可能就是Python的面向?qū)ο筇攸c了。那些還未能全部精通OOP(ObjectOrientedProgramming,面向?qū)ο蟮某绦蛟O(shè)計)的人對徑直使用Python還是有所顧忌的,但是OOP并非必須或者強制的。入門也是很簡單的,你可以先稍加涉獵,等到有所準(zhǔn)備之后才開始使用。

易讀

Python與其他語言顯著的差異是,它沒有其他語言通常用來訪問變量、定義代碼塊和進(jìn)行模式匹配的命令式符號。通常這些符號包括:美元符號($)、分號(;)、波浪號(~)等等。沒有這些分神的家伙,Python代碼變得更加定義清晰和易于閱讀。讓很多程序員沮喪(或者欣慰)的是,不像其他語言,Python沒有給你多少機會使你能夠?qū)懗龌逎y懂的代碼,而是讓其他人很快就能理解你寫的代碼,反之亦然。

如前所述,一門語言的可讀性讓它更易于學(xué)習(xí)。我們甚至敢冒昧的聲稱,即使對那些之前連一行Python代碼都沒看過的人來說,那些代碼也是相當(dāng)容易理解的??纯聪乱徽鹿?jié)——“起步”中的例子,然后告訴我們你的進(jìn)展是多么神速。

易維護(hù)

源代碼維護(hù)是軟件開發(fā)生命周期的組成部分。只要不被其他軟件取代或者被放棄使用,你的軟件通常會保持繼續(xù)的再開發(fā)。這通??杀纫粋€程序員在一家公司的在職時間要長得多了。Python項目的成功很大程度上要歸功于其源代碼的易于維護(hù),當(dāng)然這也要視代碼長度和復(fù)雜度而定。然而,得出這個結(jié)論并不難,因為Python本身就是易于學(xué)習(xí)和閱讀的。Python另外一個激動人心的優(yōu)勢就是,當(dāng)你在閱讀自己六個月之前寫的腳本程序的時候,不會把自己搞得一頭霧水,也不需要借助參考手冊才能讀懂自己的軟件。

健壯性

沒有什么能夠比允許程序員在錯誤發(fā)生的時候根據(jù)出錯條件提供處理機制更有效的了。針對錯誤,Python提供了“安全合理”的退出機制,讓程序員能掌控局面。一旦你的Python由于錯誤崩潰,解釋程序就會轉(zhuǎn)出一個“堆棧跟蹤”,那里面有可用到的全部信息,包括你程序崩潰的原因以及是那段代碼(文件名、行數(shù)、行數(shù)調(diào)用等等)出錯了。這些錯誤被稱為異常。

如果在運行時發(fā)生這樣的錯誤,Python使你能夠監(jiān)控這些錯誤并進(jìn)行處理。這些異常處理可以采取相應(yīng)的措施,例如解決問題、重定向程序流、執(zhí)行清除或維護(hù)步驟、正常關(guān)閉應(yīng)用程序、亦或干脆忽略掉。無論如何,這都可以有效的縮減開發(fā)周期中的調(diào)試環(huán)節(jié)。

Python的健壯性對軟件設(shè)計師和用戶而言都是大有助益的。一旦某些錯誤處理不當(dāng),Python也還能提供一些信息,作為某個錯誤結(jié)果而產(chǎn)生的堆棧追蹤不僅可以描述錯誤的類型和位置,還能指出代碼所在模塊。

高效的快速原型開發(fā)工具

我們之前已經(jīng)提到了Python是多么的易學(xué)易讀。但是,你或許要問了,BASIC也是如此啊,Python有什么出類拔萃的呢?與那些封閉僵化的語言不同,Python有許多面向其他系統(tǒng)的接口,它的功能足夠強大,本身也足夠強壯,所以完全可以使用Python開發(fā)整個系統(tǒng)的原型。顯然,傳統(tǒng)的編譯型語言也能實現(xiàn)同樣的系統(tǒng)建模,但是Python工程方面的簡潔性讓我們可以在同樣的時間內(nèi)游刃有余的完成相同的工作。

此外,大家已經(jīng)為Python開發(fā)了為數(shù)眾多的擴展庫,所以無論你打算開發(fā)什么樣的應(yīng)用程序,都可能找到先行的前輩。你所要做的全部事情,就是來個“即插即用”(當(dāng)然,也要自行配置一番)!只要你能想得出來,Python模塊和包就能幫你實現(xiàn)。Python標(biāo)準(zhǔn)庫是很完備的,如果你在其中找不到所需,那么第三方模塊或包就會為你完成工作提供可能。

內(nèi)存管理器

C或者C++***的弊病在于內(nèi)存管理是由開發(fā)者負(fù)責(zé)的。所以哪怕是對于一個很少訪問、修改和管理內(nèi)存的應(yīng)用程序,程序員也必須在執(zhí)行了基本任務(wù)之外履行這些職責(zé)。這些加諸在開發(fā)者身上的沒有必要的負(fù)擔(dān)和責(zé)任常常會分散精力。在Python中,由于內(nèi)存管理是由Python解釋器負(fù)責(zé)的,所以開發(fā)人員就可以從內(nèi)存事務(wù)中解放出來,全神貫注于最直接的目標(biāo),僅僅致力于開發(fā)計劃中首要的應(yīng)用程序。這會使錯誤更少、程序更健壯、開發(fā)周期更短。

解釋性和(字節(jié))編譯性

Python是一種解釋型語言,這意味著開發(fā)過程中沒有了編譯這個環(huán)節(jié)。一般來說,由于不是以本地機器碼運行,純粹的解釋型語言通常比編譯型語言運行的慢。然而,類似于Java,Python實際上是字節(jié)編譯的,其結(jié)果就是可以生成一種近似機器語言的中間形式。這不僅改善了Python的性能,還同時使它保持了解釋型語言的優(yōu)點。
 

【編輯推薦】

  1. 全能選手 看看Python應(yīng)乎潮流的72變
  2. 旁觀者清 Python與Ruby各有千秋
  3. Python 2.7正式版發(fā)布 2.x系列的絕唱
  4. 專訪豆瓣網(wǎng)***架構(gòu)師洪強寧:Python,簡單的力量
  5. 手把手教您Python多線程應(yīng)用技巧
責(zé)任編輯:王曉東 來源: Python核心編程
相關(guān)推薦

2022-07-29 11:02:17

Web3NFT元宇宙

2013-03-04 13:55:29

2013-04-19 10:06:51

ApacheHadoopMapReduce計算

2023-05-07 07:52:34

系統(tǒng)地址解碼

2018-05-11 15:41:45

IT人老程序員職場

2013-07-31 08:51:36

移動CRM數(shù)聚軟件

2022-03-04 06:46:30

Python代碼

2021-01-09 23:00:48

機器人工程師醫(yī)學(xué)

2009-08-14 09:19:15

Windows 7XP模式優(yōu)缺點

2017-12-20 16:40:55

機器人人工智能染色體

2018-01-24 09:30:07

2011-09-15 09:19:30

2015-09-21 14:44:54

物聯(lián)網(wǎng)

2020-08-03 11:43:01

神經(jīng)網(wǎng)絡(luò)優(yōu)化機器學(xué)習(xí)

2015-08-25 08:55:14

優(yōu)秀代碼基因

2012-04-25 10:18:49

jQuery

2016-03-31 16:50:54

2021-03-26 06:36:50

安全軟件殺毒軟件免費安全軟件

2022-03-04 09:43:18

UDP日志TCP

2023-09-19 09:35:31

CIO技能趨勢
點贊
收藏

51CTO技術(shù)棧公眾號