日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python历史以及基础知识

發(fā)布時間:2024/7/5 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python历史以及基础知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. Python 基礎(chǔ)知識




1.1 Python 歷史


1.1.1 Python 起源


Python 的作者,Guido von Rossum,荷蘭人。1982 年,Guido 從阿姆斯特丹大學(xué)
獲得了數(shù)學(xué)和計算機(jī)碩士學(xué)位。然而,盡管他算得上是一位數(shù)學(xué)家,但他更加享受計算機(jī)帶
來的樂趣。用他的話說,盡管擁有數(shù)學(xué)和計算機(jī)雙料資質(zhì),他總趨向于做計算機(jī)相關(guān)的工作,
并熱衷于做任何和編程相關(guān)的活兒。


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


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


Guido 希望有一種語言,這種語言能夠像 C 語言那樣,能夠全面調(diào)用計算機(jī)的功能接
口,又可以像 shell 那樣,可以輕松的編程。ABC 語言讓 Guido 看到希望。ABC 是由荷蘭
的數(shù)學(xué)和計算機(jī)研究所開發(fā)的。Guido 在該研究所工作,并參與到 ABC 語言的開發(fā)。ABC
語言以教學(xué)為目的。與當(dāng)時的大部分語言不同,ABC 語言的目標(biāo)是“讓用戶感覺更好”。ABC
語言希望讓語言變得容易閱讀,容易使用,容易記憶,容易學(xué)習(xí),并以此來激發(fā)人們學(xué)習(xí)編
程的興趣。比如下面是一段來自 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 程序員應(yīng)該很容易理解這段程序。ABC 語
言使用冒號和縮進(jìn)來表示程序塊。行 尾沒有分號。for 和 if 結(jié)構(gòu)中也沒有括號() 。賦值采
用的是 PUT,而不是更常見的等號。這些改動讓 ABC 程序讀起來像一段文字。 盡管已經(jīng)
具備了良好的可讀性和易用性,ABC 語言最終沒有流行起來。在當(dāng)時,ABC 語言編譯器需
要比較高配置的電腦才能運(yùn)行。而這些電腦的使用者通常精通計算機(jī),他們更多考慮程序的
效率,而非它的學(xué)習(xí)難度。除了硬件上的困難外,ABC 語言的設(shè)計也存在一些致命的問題:
可拓展性差。ABC 語言不是模塊化語言。


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




1.2 Python 誕生


1991 年,第一個 Python 編譯器誕生。它是用 C 語言實(shí)現(xiàn)的,并能夠調(diào)用 C 語言的庫
文件。從一出生,Python 已經(jīng)具有了 :類,函數(shù),異常處理,包含表和詞典在內(nèi)的核心
數(shù)據(jù)類型,以及模塊為基礎(chǔ)的拓展系統(tǒng)。 Python 語法很多來自 C,但又受到 ABC 語言的
強(qiáng)烈影響。來自 ABC 語言的一些規(guī)定直到今天還富有爭議,比如強(qiáng)制縮進(jìn)。 但這些語法規(guī)
定讓 Python 容易讀。另一方面,Python 聰明的選擇服從一些慣例,特別是 C 語言的慣例,
比如回歸等號賦值。Guido 認(rèn)為,如果“常識”上確立的東西,沒有必要過度糾結(jié)。 Python
從一開始就特別在意可拓展性。Python 可以在多個層次上拓展。從高層上,你可以直接引
入. py 文件。在底層,你可以引用 C 語言的庫。Python 程序員可以快速的使用 Python 寫. py 文件作為拓展模塊。但當(dāng)性能是考慮的重要因素時,Python 程序員可以深入底層,寫 C
程序,編譯為.so 文件引入到 Python 中使用。Python 就好像是使用鋼構(gòu)建房一樣,先規(guī)
定好大的框架。而程序員可以在此框架下相當(dāng)自由的拓展或更改。 最初的 Python 完全由
Guido 本人開發(fā)。Python 得到 Guido 同事的歡迎。他們迅速的反饋使用意見,并參與到
Python 的改進(jìn)。Guido 和一些同事構(gòu)成 Python 的核心團(tuán)隊(duì)。他們將自己大部分的業(yè)余時
間用于 hack Python。隨后,Python 拓展到研究所之外。Python 將許多機(jī)器層面上的細(xì)
節(jié)隱藏,交給編譯器處理,并凸顯出邏輯層面的編程思考。Python 程序員可以花更多的時
間用于思考程序的邏輯,而不是具體的實(shí)現(xiàn)細(xì)節(jié)。這一特征吸引了廣大的程序員。Python
開始流行。




1.1.3 時勢造英雄


我們不得不暫停我們的 Python 時間,轉(zhuǎn)而看一看瞬息萬變的計算機(jī)行業(yè)。1990 年代
初,個人計算機(jī)開始進(jìn)入普通家庭。Intel 發(fā)布了 486 處理器,windows 發(fā)布 window 3.0
開始的一系列視窗系統(tǒng)。計算機(jī)的性能大大提高。程序員開始關(guān)注計算機(jī)的易用性,比如圖
形化界面。
(Windows 3.0)


由于計算機(jī)性能的提高,軟件的世界也開始隨之改變。硬件足以滿足許多個人電腦的需
要。硬件廠商甚至渴望高需求軟件的出現(xiàn),以帶動硬件的更新?lián)Q代。C++和 Java 相繼流行。
C++和 Java 提供了面向?qū)ο蟮木幊谭妒?#xff0c;以及豐富的對象庫。在犧牲了一定的性能的代價
下,C++和 Java 大大提高了程序的產(chǎn)量。語言的易用性被提到一個新的高度。我們還記得 ,
ABC 失敗的一個重要原因是硬件的性能限制。從這方面說,Python 要比 ABC 幸運(yùn)許多。
硬件性能不是瓶頸,Python 又容易使用,所以許多人開始轉(zhuǎn)向 Python。Guido 維護(hù)了一
個 maillist,Python 用戶就通過郵件進(jìn)行交流。Python 用戶來自許多領(lǐng)域,有不同的背景,
對 Python 也有不同的需求。


Python 相當(dāng)?shù)拈_放,又容 易拓展,所以當(dāng)用戶不滿足于現(xiàn)有
功能,很容易對 Python 進(jìn)行拓展或改造。隨后,這些用戶將改動發(fā)給 Guido,并由 Gu ido
決定是否將新的特征加入到 Python 或者標(biāo)準(zhǔn)庫中。如果代碼能被納入 Python 自身或者標(biāo)
準(zhǔn)庫,這將極大的榮譽(yù)。


由于 Guido 至高無上的決定權(quán),他因此被稱為“終身的仁慈獨(dú)裁
者”。 Python 被稱為“Battery Included”,是說它以及其標(biāo)準(zhǔn)庫的功能強(qiáng)大。這些是整個
社區(qū)的貢獻(xiàn)。Python 的開發(fā)者來自不同領(lǐng)域,他們將不同領(lǐng)域的優(yōu)點(diǎn)帶給 Python。比如
Python 標(biāo)準(zhǔn)庫中的正則表達(dá)是參考 Perl,而 lambda, map, filter, reduce 等函數(shù)參考了
Lisp。Python 本身的一些功能以及大部分的標(biāo)準(zhǔn)庫來自于社區(qū)。Python 的社 區(qū)不斷擴(kuò)大,
進(jìn)而擁有了自己的 newsgroup,網(wǎng)站,以及基金。從 Python 2.0 開始,Python 也從 maillist
的開發(fā)方式,轉(zhuǎn)為完全開源的開發(fā)方式。社區(qū)氣氛已經(jīng)形成,工作被整個社區(qū)分擔(dān),Python
也獲得了更加高速的發(fā)展。 到今天,Python 的框架已經(jīng)確立。Python 語言以對象為核心
組織代碼,支持多種編程范式,采用動態(tài)類型,自動進(jìn)行內(nèi)存回收。Python 支持解釋運(yùn)行,
并能調(diào)用 C庫進(jìn)行拓展。Python有強(qiáng)大的標(biāo)準(zhǔn)庫。由于標(biāo)準(zhǔn)庫的體系已經(jīng)穩(wěn)定,所以Python
的生態(tài)系統(tǒng)開始拓展到第三方包。這些包,如 Django、web.py、wxpython、numpy、
matplotlib、PIL,將 Python 升級成了物種豐富的熱帶雨林。






1.4 啟示錄


Python 崇尚優(yōu)美、清晰、簡單,是一個優(yōu)秀并廣泛使用的語言。Python 在 TIOBE 排
行榜中排行第八,它是 Google 的第三大開發(fā)語言,Dropbox 的基礎(chǔ)語言,豆瓣的服務(wù)器
語言。Python 的發(fā)展史可以作為一個代表,帶給我許多啟示。 在 Python 的開發(fā)過程中,
社區(qū)起到了重要的作用。Guido 自認(rèn)為自己不是全能型的程序員,所以他只負(fù)責(zé)制訂框架。
如果問題太復(fù)雜,他會選擇繞過去,也就是 cut the corner。這些問題最終由社區(qū)中的其他
人解決。社區(qū)中的人才是異常豐富的,就連創(chuàng)建網(wǎng)站,籌集基金這樣與開發(fā)稍遠(yuǎn)的事情,也
有人樂意于處理。如今的項(xiàng)目開發(fā)越來越復(fù)雜,越來越龐大,合作以及開放的心態(tài)成為項(xiàng)目
最終成功的關(guān)鍵。 Python 從其他語言中學(xué)到了很多,無論是已經(jīng)進(jìn)入歷史的 ABC,還是
依然在使用的 C 和 Perl,以及許多沒有列出的其他 語言。可以說,Python 的成功代表了
它所有借鑒的語言的成功。同樣,Ruby 借鑒了 Python,它的成功也代表了 Python 某些
方面的成功。每個語言都是混合體,都有它優(yōu)秀的地方,但也有各種各樣的缺陷。同時,一
個語言“好與不好”的評 判,往往受制于平臺、硬件、時代等等外部原因。程序員經(jīng)歷過
許多語言之爭。其實(shí),以開放的心態(tài)來接受各個語言,說不定哪一天,程序員也可以如 Guido
那樣,混合出自己的語言。




1.5 Python 優(yōu)缺點(diǎn)




優(yōu)點(diǎn):
??
簡單————Python 是一種代表簡單主義思想的語言。閱讀一個良好的 Python 程序
就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴(yán)格!Python 的這種偽代碼本質(zhì)
是它最大的優(yōu)點(diǎn)之一。它使你能夠?qū)W⒂诮鉀Q問題而不是去搞明白語言本身。
??
易學(xué)————就如同你即將看到的一樣,Python 極其容易上手。前面已經(jīng)提到了,
Python 有極其簡單的語法。
??
免費(fèi)、開源————Python 是 FLOSS(自由/開放源碼軟件)之一。簡單地說,你可
以自由地發(fā)布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用于新的
自由軟件中。FLOSS 是基于一個團(tuán)體分享知識的概念。這是為什么 Python 如此優(yōu)秀
的原因之一——它是由一群希望看到一個更加優(yōu)秀的 Python 的人創(chuàng)造并經(jīng)常改進(jìn)著
的。
??
高層語言————當(dāng)你用 Python 語言編寫程序的時候,你無需考慮諸如如何管理你
的程序使用的內(nèi)存一類的底層細(xì)節(jié)。
??
可移植性————由于它的開源本質(zhì),Python 已經(jīng)被移植在許多平臺上(經(jīng)過改動使
它能夠工作在不同平臺上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么你的所有
Python 程序無需修改就可以在下述任何平臺上面運(yùn)行。這些平臺包括 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 平臺!


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


面向?qū)ο蟆狿ython 既支持面向過程的編程也支持面向?qū)ο蟮木幊獭T凇懊嫦蜻^
程”的語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構(gòu)建起來的。在“面向?qū)ο蟆?
的語言中,程序是由數(shù)據(jù)和功能組合而成的對象構(gòu)建起來的。與其他主要的語言如 C++
和 Java 相比,Python 以一種非常強(qiáng)大又簡單的方式實(shí)現(xiàn)面向?qū)ο缶幊獭?
??


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


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


規(guī)范的代碼————Python 采用強(qiáng)制縮進(jìn)的方式使得代碼具有極佳的可讀性。




缺點(diǎn):
? 運(yùn)行速度,有速度要求的話,用 C++改寫關(guān)鍵部分吧。
? 國內(nèi)市場較小。
? 中文資料匱乏。






1.6 Python 應(yīng)用場景


? Web 應(yīng)用開發(fā)。Python 經(jīng)常被用于 Web 開發(fā)。比如,通過 mod_wsgi 模塊,Apache
可以運(yùn)行用 Python編寫的 Web程序。Python 定義了 WSGI標(biāo)準(zhǔn)應(yīng)用接口來協(xié)調(diào)Http
服 務(wù) 器 與 基 于 Python 的 Web 程 序 之 間 的 通 信 。 一 些 Web 框 架 , 如
Django,TurboGears,web2py,Zope 等,可以讓程序員輕松地開發(fā)和管理復(fù)雜的 Web
程序。
?
?操作系統(tǒng)管理、服務(wù)器運(yùn)維的自動化腳本。在很多操作系統(tǒng)里,Python 是標(biāo)準(zhǔn)的系統(tǒng)
組件。大多數(shù) Linux 發(fā)行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,
可以在終端下直接運(yùn)行 Python。Python 標(biāo)準(zhǔn)庫包含了多個調(diào)用操作系統(tǒng)功能的庫。
通過 pywin32 這個第三方軟件包,Python 能夠訪問 Windows 的 COM 服務(wù)及其它
Windows API。使用 IronPython,Python 程序能夠直接調(diào)用.Net Framework。一
般說來,Python 編寫的系統(tǒng)管理腳本在可讀性、性能、代碼重用度、擴(kuò)展性幾方面都
優(yōu)于普通的 shell 腳本。
??
科學(xué)計算。NumPy,SciPy,Matplotlib 可以讓 Python 程序員編寫科學(xué)計算程序。
??
桌面軟件。PyQt、PySide、wxPython、PyGTK 是 Python 快速開發(fā)桌面應(yīng)用程序的
利器。
?
?服務(wù)器軟件(網(wǎng)絡(luò)軟件).Python 對于各種網(wǎng)絡(luò)協(xié)議的支持很完善,因此經(jīng)常被用于編
寫服務(wù)器軟件、網(wǎng)絡(luò)爬蟲。
??
游戲。很多游戲使用 C++編寫圖形顯示等高性能模塊,而使用 Python 或者 Lua 編寫
游戲的邏輯、服務(wù)器。相較于 Python,Lua 的功能更簡單、體積更小;而 Python 則
支持更多的特性和數(shù)據(jù)類型。
? 構(gòu)思實(shí)現(xiàn),產(chǎn)品早期原型和迭代。YouTube、Google、Yahoo!、NASA 都在內(nèi)部大量
地使用 Python。




1.7 Py2.x 與 3.x 版本簡介


目前市場上有兩個 Python 的版本并存著,分別是 Python 2.x 和 Python 3.x:
# 使用 python 2.x 解釋器
$ python xxx.py
# 使用 python 3.x 解釋器
$ python3 xxx.py




新的 Python 程序建議使用 Python 3.0 版本的語法
Python 2.x 是 過去的版本,解釋器名稱是 python. Python 3.x 是 現(xiàn)在和未來 主流的版本,解釋器名稱是 python3. 相對于 Python 的早期版本,這是一個 較大的升級.為了不帶入過多的累贅,Python
3.0 在設(shè)計的時候 沒有考慮向下兼容.許多早期 Python 版本設(shè)計的程序都無法在
Python 3.0 上正常執(zhí)行. Python 3.0 發(fā)布于 2008 年,到目前為止,Python 3.0 的穩(wěn)定版本已經(jīng)有很多年了:
Python 3.3 發(fā)布于 2012
Python 3.4 發(fā)布于 2014
Python 3.5 發(fā)布于 2015
Python 3.6 發(fā)布于 2016
為了照顧現(xiàn)有的程序,官方提供了一個過渡版本 —— Python 2.6,基本使用了
Python 2.x 的語法和庫,同時考慮了向 Python 3.0 的遷移,允許使用部分 Python 3.0 的
語法與函數(shù).
2010 年中推出的 Python 2.7 被確定為 最后一個 Python 2.x 版本. 提示:如果開發(fā)時,無法立即使用 Python 3.0(還有極少的第三方庫不支持 3.0 的語法),




建議:
先使用 Python 3.0 版本進(jìn)行開發(fā). 然后使用 Python 2.6、Python 2.7 來執(zhí)行,并且做一些兼容性的處理.?




1.8 Python 的解釋器


Python 的解釋器 如今有多個語言的實(shí)現(xiàn),包括:
CPython —— 官方版本的 C 語言實(shí)現(xiàn)
Jython —— 可以運(yùn)行在 Java 平臺
IronPython —— 可以運(yùn)行在 .NET 和 Mono 平臺
PyPy —— Python 實(shí)現(xiàn)的,支持 JIT 即時編譯

總結(jié)

以上是生活随笔為你收集整理的python历史以及基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。