認識python(了解)-創(chuàng)新互聯(lián)

認識python(了解)
一、Python發(fā)展背景
Python的作者,Guido von Rossum(吉多·范·羅蘇姆,中國Python程序員都叫他 龜叔),荷蘭人。1982年,龜叔從阿姆斯特丹大學獲得了數(shù)學和計算機碩士學位。然而,盡管他算得上是一位數(shù)學家,但他更加享受計算機帶來的樂趣。用他的話說,雖然擁有數(shù)學和計算機雙料資質,他總趨向于做計算機相關的工作,并熱衷于做任何和編程相關的事情。

創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站制作、成都網(wǎng)站設計、外貿營銷網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元扶溝做網(wǎng)站,已為上家服務,為扶溝各地企業(yè)和個人服務,聯(lián)系電話:18982081108

在那個時候,龜叔接觸并使用過諸如Pascal、C、Fortran等語言。這些語言的基本設計原則是讓機器能更快運行。在80年代,雖然IBM和蘋果已經(jīng)掀起了個人電腦浪潮,但這些個人電腦的配置很低。比如早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個大的數(shù)組就能占滿內存。所有的編譯器的核心是做優(yōu)化,以便讓程序能夠運行。為了增進效率,語言也迫使程序員像計算機一樣思考,以便能寫出更符合機器口味的程序。在那個時代,程序員恨不得用手榨取計算機每一寸的能力。有人甚至認為C語言的指針是在浪費內存。至于動態(tài)類型,內存自動管理,面向對象…… 別想了,那會讓你的電腦陷入癱瘓。

這種編程方式讓龜叔感到苦惱。龜叔知道如何用C語言寫出一個功能,但整個編寫過程需要耗費大量的時間,即使他已經(jīng)準確的知道了如何實現(xiàn)。他的另一個選擇是shell。Bourne Shell作為UNIX系統(tǒng)的解釋器已經(jīng)長期存在。UNIX的管理員們常常用shell去寫一些簡單的腳本,以進行一些系統(tǒng)維護的工作,比如定期備份、文件系統(tǒng)管理等等。shell可以像膠水一樣,將UNIX下的許多功能連接在一起。許多C語言下上百行的程序,在shell下只用幾行就可以完成。然而,shell的本質是調用命令。它并不是一個真正的語言。比如說,shell沒有數(shù)值型的數(shù)據(jù)類型,加法運算都很復雜??傊瑂hell不能全面的調動計算機的功能。

龜叔希望有一種語言,這種語言能夠像C語言那樣,能夠全面調用計算機的功能接口,又可以像shell那樣,可以輕松的編程。ABC語言讓龜叔看到希望。ABC是由荷蘭的數(shù)學和計算機研究所開發(fā)的。龜叔在該研究所工作,并參與到ABC語言的開發(fā)。ABC語言以教學為目的。與當時的大部分語言不同,ABC語言的目標是“讓用戶感覺更好”。ABC語言希望讓語言變得容易閱讀,容易使用,容易記憶,容易學習,并以此來激發(fā)人們學習編程的興趣。比如下面是一段來自Wikipedia的ABC程序,這個程序用于統(tǒng)計文本中出現(xiàn)的詞的總數(shù):

HOW TO RETURN words document:
PUT {} IN collection
FOR line IN document:
FOR word IN split line:
IF word not.in collection:
INSERT word IN collection
RETURN collection
HOW TO用于定義一個函數(shù)。一個Python程序員應該很容易理解這段程序。ABC語言使用冒號和縮進來表示程序塊。行 尾沒有分號。for和if結構中也沒有括號() 。賦值采用的是PUT,而不是更常見的等號。這些改動讓ABC程序讀起來像一段文字。

盡管已經(jīng)具備了良好的可讀性和易用性,ABC語言最終沒有流行起來。在當時,ABC語言編譯器需要比較高配置的電腦才能運行。而這些電腦的使用者通常精通計算機,他們更多考慮程序的效率,而非它的學習難度。除了硬件上的困難外,ABC語言的設計也存在一些致命的問題:

可拓展性差。ABC語言不是模塊化語言。如果想在ABC語言中增加功能,比如對圖形化的支持,就必須改動很多地方。
不能直接進行IO。ABC語言不能直接操作文件系統(tǒng)。盡管你可以通過諸如文本流的方式導入數(shù)據(jù),但ABC無法直接讀寫文 件。輸入輸出的困難對于計算機語言來說是致命的。你能想像一個打不開車門的跑車么?
過度革新。ABC用自然語言的方式來表達程序的意義,比如上面程序中的HOW TO 。然而對于程序員來說,他們更習慣 用function或者define來定義一個函數(shù)。同樣,程序員更習慣用等號來分配變量。盡管ABC語言很特別,但學習難度 也很大。
傳播困難。ABC編譯器很大,必須被保存在磁帶上。當時龜叔在訪問的時候,就必須有一個大磁帶來給別人安裝ABC編 譯器。 這樣,ABC語言就很難快速傳播。
1989年,為了打發(fā)圣誕節(jié)假期,龜叔開始寫Python語言的編譯器。Python這個名字,來自龜叔所摯愛的電視劇Monty Python's Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創(chuàng)造一種C和shell之間,功能全面,易學易用,可拓展的語言。龜叔作為一個語言設計愛好者,已經(jīng)有過設計語言的嘗試。這一次,也不過是一次純粹的hacking行為。

二、Python語言的誕生
1991年,第一個Python編譯器誕生。它是用C語言實現(xiàn)的,并能夠調用C語言的庫文件。從一出生,Python已經(jīng)具有了 :類,函數(shù),異常處理,包含表和詞典在內的核心數(shù)據(jù)類型,以及模塊為基礎的拓展系統(tǒng)。

Python語法很多來自C,但又受到ABC語言的強烈影響。來自ABC語言的一些規(guī)定直到今天還富有爭議,比如強制縮進。 但這些語法規(guī)定讓Python容易讀。另一方面,Python聰明的選擇服從一些慣例,特別是C語言的慣例,比如回歸等號賦值。龜叔認為,如果“常識”上確立的東西,沒有必要過度糾結。

Python從一開始就特別在意可拓展性。Python可以在多個層次上拓展。從高層上,你可以直接引入. py文件。在底層,你可以引用C語言的庫。Python程序員可以快速的使用Python寫. py文件作為拓展模塊。但當性能是考慮的重要因素時,Python程序員可以深入底層,寫C程序,編譯為.so文件引入到Python中使用。Python就好像是使用鋼構建房一樣,先規(guī)定好大的框架。而程序員可以在此框架下相當自由的拓展或更 改。

最初的Python完全由龜叔本人開發(fā)。Python得到龜叔同事的歡迎。他們迅速的反饋使用意見,并參與到Python的改進。龜叔和一些同事構成Python的核心團隊。他們將自己大部分的業(yè)余時間用于hack Python。隨后,Python拓 展到研究所之外。Python將許多機器層面上的細節(jié)隱藏,交給編譯器處理,并凸顯出邏輯層面的編程思考。Python程 序員可以花更多的時間用于思考程序的邏輯,而不是具體的實現(xiàn)細節(jié)。這一特征吸引了廣大的程序員。Python開始流行。
認識python(了解)

人生苦短,我用python

計算機硬件越來越強大,Python又容易使用,所以許多人開始轉向Python。龜叔維護了一個mail list,Python用戶就通過郵件進行交流。Python用戶來自許多領域,有不同的背景,對Python也有不同的需求。Python相當?shù)拈_放,又容 易拓展,所以當用戶不滿足于現(xiàn)有功能,很容易對Python進行拓展或改造。隨后,這些用戶將改動發(fā)給龜叔,并由龜叔決定是否將新的特征加入到Python或者標準庫中。如果代碼能被納入Python自身或者標準庫,這將極大的榮譽。由于龜叔至高無上的決定權,他因此被稱為“終身的仁慈獨裁者”。

Python以及其標準庫的功能強大。這些是整個社區(qū)的貢獻。Python的開發(fā)者來自不同領域,他們將不同領域的優(yōu)點帶給Python。比如Python標準庫中的正則表達是參考Perl,而lambda, map, filter, reduce等函數(shù)參考了Lisp。Python本身的一些功能以及大部分的標準庫來自于社區(qū)。Python的社 區(qū)不斷擴大,進而擁有了自己的newsgroup,網(wǎng)站,以及基金。從Python 2.0開始,Python也從mail list的開發(fā)方式,轉為完全開源的開發(fā)方式。社區(qū)氣氛已經(jīng)形成,工作被整個社區(qū)分擔,Python也獲得了更加高速的發(fā)展。

到今天,Python的框架已經(jīng)確立。Python語言以對象為核心組織代碼,支持多種編程范式,采用動態(tài)類型,自動進行內存回收。Python支持解釋運行,并能調用C庫進行拓展。Python有強大的標準庫。由于標準庫的體系已經(jīng)穩(wěn)定,所以Python的生態(tài)系統(tǒng)開始拓展到第三方包。這些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,將Python升級成了物種豐富的熱帶雨林。

Python崇尚優(yōu)美、清晰、簡單,是一個優(yōu)秀并廣泛使用的語言。Python在TIOBE排行榜中排行第八,它是Google的第三大開發(fā)語言,Dropbox的基礎語言,豆瓣的服務器語言。Python的發(fā)展史可以作為一個代表,帶給我許多啟示。

在Python的開發(fā)過程中,社區(qū)起到了重要的作用。龜叔自認為自己不是全能型的程序員,所以他只負責制訂框架。如果問題太復雜,他會選擇繞過去,也就是cut the corner。這些問題最終由社區(qū)中的其他人解決。社區(qū)中的人才是異常豐富的,就連創(chuàng)建網(wǎng)站,籌集基金這樣與開發(fā)稍遠的事情,也有人樂意于處理。如今的項目開發(fā)越來越復雜,越來越龐大,合作以及開放的心態(tài)成為項目最終成功的關鍵。

Python從其他語言中學到了很多,無論是已經(jīng)進入歷史的ABC,還是依然在使用的C和Perl,以及許多沒有列出的其他 語言。可以說,Python的成功代表了它所有借鑒的語言的成功。同樣,Ruby借鑒了Python,它的成功也代表了Python某些方面的成功。每個語言都是混合體,都有它優(yōu)秀的地方,但也有各種各樣的缺陷。同時,一個語言“好與不好”的評判,往往受制于平臺、硬件、時代等等外部原因。程序員經(jīng)歷過許多語言之爭。其實,以開放的心態(tài)來接受各個語言,說不定哪一天,程序員也可以如龜叔那樣,混合出自己的語言。

三、關鍵點常識
Python的發(fā)音與拼寫
Python的作者是Guido van Rossum(龜叔)
Python正式誕生于1991年
Python的解釋器如今有多個語言實現(xiàn),我們常用的是CPython(官方版本的C語言實現(xiàn)),其他還有Jython(可以運行在Java平臺)、IronPython(可以運行在.NET和Mono平臺)、PyPy(Python實現(xiàn)的,支持JIT即時編譯)
Python目前有兩個版本,Python2和Python3,最新版分別為2.7.13和3.6.2
Life is shot, you need Python. 人生苦短,我用Python。
編程語言排行榜
認識python(了解)

(2017年8月,TIOBE 編程語言流行排行榜)

四、Python優(yōu)缺點
優(yōu)點
簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格!Python的這種偽代碼本質是它大的優(yōu)點之一。它使你能夠專注于解決問題而不是去搞明白語言本身。

易學:就如同你即將看到的一樣,Python極其容易上手。前面已經(jīng)提到了,Python有極其簡單的語法。

免費、開源:Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,你可以自由地發(fā)布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用于新的自由軟件中。FLOSS是基于一個團體分享知識的概念。這是為什么Python如此優(yōu)秀的原因之一——它是由一群希望看到一個更加優(yōu)秀的Python的人創(chuàng)造并經(jīng)常改進著的。

高層語言:當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節(jié)。

可移植性:由于它的開源本質,Python已經(jīng)被移植在許多平臺上(經(jīng)過改動使它能夠工作在不同平臺上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么你的所有Python程序無需修改就可以在下述任何平臺上面運行。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC、Symbian以及Google基于linux開發(fā)的Android平臺!

解釋型語言:一個用編譯型語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。當你運行你的程序的時候,連接/轉載器軟件把你的程序從硬盤復制到內存中并且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱為字節(jié)碼的中間形式,然后再把它翻譯成計算機使用的機器語言并運行。事實上,由于你不再需要擔心如何編譯程序,如何確保連接轉載正確的庫等等,所有這一切使得使用Python更加簡單。由于你只需要把你的Python程序拷貝到另外一臺計算機上,它就可以工作了,這也使得你的Python程序更加易于移植。

面向對象:Python既支持面向過程的編程也支持面向對象的編程。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構建起來的。在“面向對象”的語言中,程序是由數(shù)據(jù)和功能組合而成的對象構建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強大又簡單的方式實現(xiàn)面向對象編程。

可擴展性:如果你需要你的一段關鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然后在你的Python程序中使用它們。

豐富的庫:Python標準庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數(shù)據(jù)庫、網(wǎng)頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python的“功能齊全”理念。除了標準庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。

規(guī)范的代碼:Python采用強制縮進的方式使得代碼具有極佳的可讀性。

缺點
Python語言非常完善,沒有明顯的短板和缺點,唯一的缺點就是執(zhí)行效率慢,這個是解釋型語言所通有的,同時這個缺點也將被計算機越來越強大的性能所彌補。

五、Python應用場景
Web應用開發(fā)

Python經(jīng)常被用于Web開發(fā)。比如,通過mod_wsgi模塊,Apache可以運行用Python編寫的Web程序。Python定義了WSGI標準應用接口來協(xié)調Http服務器與基于Python的Web程序之間的通信。一些Web框架,如Django,TurboGears,web2py,Zope等,可以讓程序員輕松地開發(fā)和管理復雜的Web程序。

操作系統(tǒng)管理、服務器運維的自動化腳本

在很多操作系統(tǒng)里,Python是標準的系統(tǒng)組件。 大多數(shù)Linux發(fā)行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在終端下直接運行Python。有一些Linux發(fā)行版的安裝器使用Python語言編寫,比如Ubuntu的Ubiquity安裝器,Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage包管理系統(tǒng)。Python標準庫包含了多個調用操作系統(tǒng)功能的庫。通過pywin32這個第三方軟件 包,Python能夠訪問Windows的COM服務及其它Windows API。使用IronPython,Python程序能夠直接調用.Net Framework。一般說來,Python編寫的系統(tǒng)管理腳本在可讀性、性能、代碼重用度、擴展性幾方面都優(yōu)于普通的shell腳本。

網(wǎng)絡爬蟲

Python有大量的HTTP請求處理庫和HTML解析庫,并且有成熟高效的爬蟲框架Scrapy和分布式解決方案scrapy-redis,在爬蟲的應用方面非常廣泛。

科學計算

NumPy、SciPy、Pandas、Matplotlib可以讓Python程序員編寫科學計算程序。

桌面軟件

PyQt、PySide、wxPython、PyGTK是Python快速開發(fā)桌面應用程序的利器。

服務器軟件(網(wǎng)絡軟件)

Python對于各種網(wǎng)絡協(xié)議的支持很完善,因此經(jīng)常被用于編寫服務器軟件、網(wǎng)絡爬蟲。第三方庫Twisted支持異步網(wǎng)絡編程和多數(shù)標準的網(wǎng)絡協(xié)議(包含客戶端和服務器),并且提供了多種工具,被廣泛用于編寫高性能的服務器軟件。

游戲

很多游戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫游戲的邏輯、服務器。相較于Python,Lua的功能更簡單、體積更小;而Python則支持更多的特性和數(shù)據(jù)類型。

構思實現(xiàn),產(chǎn)品早期原型和迭代

Google、NASA、Facebook都在內部大量地使用Python。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)頁名稱:認識python(了解)-創(chuàng)新互聯(lián)
當前URL:http://muchs.cn/article42/cdchec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站營銷、云服務器、虛擬主機商城網(wǎng)站、營銷型網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營