本章是本系列的第一章,也是博主第一次寫python的相關(guān)的文章,這個系列打算出20-30篇,盡量會保持周更3篇左右的幅度,總結(jié)一下自己python的學(xué)習(xí)之路,也希望能夠幫助到想學(xué)卻又不知道如何開始學(xué)習(xí)python的人。由于本人知識有限,如果博文中有相關(guān)的紕漏或者錯誤,忘海涵!
Python語言簡介
新接觸的一門語言的時候,我們應(yīng)該對我們將要學(xué)習(xí)的語言有個大致的了解,也許你常常聽過python,總是聽別人說有多牛多牛逼,但可能你心里也沒有個清晰的認(rèn)識,為啥python牛逼,她又是為何能讓全球的開發(fā)者為之瘋狂呢?不要著急,聽博主慢慢道來.
1.何為Python?
我們引用官網(wǎng)一句話:Python是一個高層次的結(jié)合了解釋性,編譯性,互動性和面向?qū)ο蟮哪_本語言.她的設(shè)計具有很強(qiáng)的可讀性,她比其他語言更有特色的語法結(jié)構(gòu)!(何為解釋性,編譯性,下面博主會詳解)
2.python的背景以及歷史
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷蘭國家數(shù)學(xué)和計算機(jī)科學(xué)研究所設(shè)計出來的。
Python 本身也是由諸多其他語言發(fā)展而來的,這包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的腳本語言等等。
像 Perl 語言一樣,Python 源代碼同樣遵循 GPL(GNU General Public License)協(xié)議。
現(xiàn)在 Python 是由一個核心開發(fā)團(tuán)隊在維護(hù),Guido van Rossum 仍然占據(jù)著至關(guān)重要的作用,指導(dǎo)其進(jìn)展。
3.Python語言的特點
- 易于學(xué)習(xí):Python有相對較少的關(guān)鍵字,結(jié)構(gòu)簡單,和一個明確定義的語法,學(xué)習(xí)起來更加簡單。
- 易于閱讀:Python代碼定義的更清晰。
- 易于維護(hù):Python的成功在于它的源代碼是相當(dāng)容易維護(hù)的。
- 一個廣泛的標(biāo)準(zhǔn)庫:Python的最大的優(yōu)勢之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh兼容很好
- 互動模式:互動模式的支持,您可以從終端輸入執(zhí)行代碼并獲得結(jié)果的語言,互動的測試和調(diào)試代碼片斷
- 可移植:基于其開放源代碼的特性,Python已經(jīng)被移植(也就是使其工作)到許多平臺。
- 可擴(kuò)展:如果你需要一段運(yùn)行很快的關(guān)鍵代碼,或者是想要編寫一些不愿開放的算法,你可以使用C或C++完成那部分程序,然后從你的Python程序中調(diào)用。
- 數(shù)據(jù)庫:Python提供所有主要的商業(yè)數(shù)據(jù)庫的接口。
- GUI編程:Python支持GUI可以創(chuàng)建和移植到許多系統(tǒng)調(diào)用。
- 可嵌入: 你可以將Python嵌入到C/C++程序,讓你的程序的用戶獲得"腳本化"的能力。
3.Python傳播速度
[圖片上傳失敗...(image-1f6505-1516071950321)]
上圖是截止2017年8月,國內(nèi)互聯(lián)網(wǎng)IT行業(yè)編程語言排行,可以看到python以及榮登榜單第五(現(xiàn)在好像第四了),可想而知Python是有多么的受大家歡迎.
4.Python的運(yùn)用領(lǐng)域
創(chuàng)始人guido希望Python在每個領(lǐng)域都能火起來,而Python也不負(fù)眾望,已經(jīng)在云計算,云服務(wù),人工智能,web,科學(xué)計算,大數(shù)據(jù)等領(lǐng)域站穩(wěn)了腳跟.在未來十年的時間里可以Python會越來越火,為了跟上時代的潮流,技多不壓身,學(xué)習(xí)和了解下總是沒有錯的!
Python程序的運(yùn)行原理
學(xué)習(xí)Python前,我們先來了解下Python程序的運(yùn)行原理.這樣有助于我們后期的學(xué)習(xí)中了解這個程序是怎么運(yùn)行的,以及對相關(guān)的原理有個大致的認(rèn)識.
Python程序運(yùn)行一般包含以下四個步驟:
- 詞法分析
- 句法分析
- 編譯
- 解釋
詞法分析:詞法分析的工作就是將輸入的原始代碼分解成一些符號,例如標(biāo)識符,關(guān)鍵字,操作符等,這個過程是編譯器自動運(yùn)行,一般不會產(chǎn)生任何錯誤.
句法分析:詞法分析之后,程序會接收到分析之后的符號,并且用一種結(jié)構(gòu)來展現(xiàn)他們之間的關(guān)系(使用的是抽象語法樹)
編譯:在句法分析后,Python會接收這顆抽象語法樹,并將它轉(zhuǎn)化為一個或多個代碼對象,通過編譯器編譯出==字節(jié)碼(也就是中間碼)==.(除了復(fù)用性較高的字節(jié)碼.其他字節(jié)碼都會在程序運(yùn)行完后被刪除)
解釋:進(jìn)過編譯得到字節(jié)碼之后,需要讓我們程序真正的在平臺上跑起來,還需要對字節(jié)碼轉(zhuǎn)為機(jī)器能夠識別的==機(jī)器碼==,這個過程叫做解釋.
Tips:機(jī)器碼和字節(jié)碼的區(qū)別
1.機(jī)器碼是能夠在處理器上直接執(zhí)行的執(zhí)行碼,每條執(zhí)行控制cpu的工作.簡而言之,機(jī)器碼運(yùn)行速度要比字節(jié)碼快很多.
2.字節(jié)碼是需要在虛擬機(jī)這個抽象的計算機(jī)中執(zhí)行,每條執(zhí)行有虛擬機(jī)去處理,最后再由虛擬機(jī)轉(zhuǎn)換成機(jī)器碼和計算機(jī)本身去交互,也正是有了中間這個過程,導(dǎo)致字節(jié)碼運(yùn)行起來沒有機(jī)器碼那么迅速.
單從語言的本身的執(zhí)行效率來講,編譯型的語言一般都要比解釋型的語言運(yùn)行效率更低.舉個簡單的例子:
java<Python<C
Q&A
對于Python語言的介紹就先到此結(jié)束了,理論再多,也需要實踐.下一篇我們開始學(xué)習(xí)下Python的環(huán)境安裝以及運(yùn)行我們的第一個HelloWord程序!