偽·從零開始學(xué)Python - 1.1 認(rèn)識Python

Python的簡要介紹

Python是一種多模型的、開源衷模、跨平臺腳本語言泉孩、高級編程語言通用型編程語言萧芙,由吉多·范羅蘇姆(Guido van Rossum)在1989年圣誕節(jié)期間给梅,為了打發(fā)無聊的圣誕節(jié)而編寫乙嘀。

Python是多模型的,指的是它同時(shí)支持面向過程面向?qū)ο?/strong>的程序設(shè)計(jì)破喻,程序設(shè)計(jì)方式靈活虎谢。

Python是開源的,指的是它由非盈利組織——Python軟件基金會(huì)(Python Software Foundation, PSF)擁有曹质、管理婴噩,由社區(qū)驅(qū)動(dòng),解釋器源代碼公開羽德,屬于自由軟件几莽。它在開源促進(jìn)會(huì)(Open Source Initiative,
OSI)支持的開源許可證下開發(fā),使得它可以自由使用宅静、分發(fā)章蚣,用于商業(yè)目的也是可以的。這個(gè)許可證被PSF管理姨夹。

Python是跨平臺的纤垂,指的是它可以在多個(gè)操作系統(tǒng)上使用、運(yùn)行磷账,如Windows峭沦、Linux、Unix逃糟、macOS吼鱼。而且,對于絕大多數(shù)使用Python編寫的代碼而言绰咽,無需修改或僅需極少量修改即可直接在不同平臺上運(yùn)行菇肃。

Python是腳本語言(或:解釋型語言),指的是它利用解釋器將代碼一句一句直接運(yùn)行取募,不同于編譯型語言(通過編譯器將整個(gè)代碼編譯為機(jī)器碼琐谤,執(zhí)行、分發(fā)程序時(shí)只需編譯生成的機(jī)器碼文件矛辕;如C語言)笑跛。通常來說,Python程序的運(yùn)行需要解釋器源代碼聊品,也可通過封裝的方式將其組合飞蹂,可以在未安裝解釋器的客戶端上使用。

Python是高級編程語言翻屈,指的是它使用類似于人類語言(而非機(jī)器語言)的語言形式來書寫代碼陈哑,具有較高的可讀性。

Python是通用型的編程語言,指的是它可以編寫解決任何問題應(yīng)用程序惊窖。

Python的優(yōu)勢與劣勢

前面提到過刽宪,Python是通用型的編程語言,指的是它可以編寫解決任何問題的應(yīng)用程序界酒。

不過圣拄,這并不是Python的優(yōu)勢:它可以寫的東西,其他語言也可以寫毁欣。

Python相對于其他語言有兩個(gè)明顯的優(yōu)勢:

第一庇谆,它提供了非常完善的基礎(chǔ)代碼庫,覆蓋了網(wǎng)絡(luò)凭疮、文件饭耳、GUI、數(shù)據(jù)庫执解、文本等大量內(nèi)容寞肖,被形象地稱作“內(nèi)置電池(batteries included)”。用Python開發(fā)衰腌,許多功能不必從零編寫新蟆,直接使用現(xiàn)成的即可。

第二——也是最重要的桶唐,它擁有龐大的第三方庫栅葡,除了直接使用外茉兰,還可以通過pip尤泽、conda等軟件包管理工具來下載、安裝规脸、更新坯约,而且許多知名的第三方庫可以非常輕松地被調(diào)用,功能也相當(dāng)強(qiáng)大莫鸭。

作為腳本語言闹丐,Python的運(yùn)行效率不如編譯型語言,運(yùn)行相同功能的代碼所需時(shí)間更長被因。但是卿拴,隨著計(jì)算機(jī)硬件技術(shù)的發(fā)展,這樣的差別變得可以忽略梨与。

但是堕花,由于它是解釋型語言,所以依賴于解釋器粥鞋,在效率缘挽、對內(nèi)存的操作和處理器的控制明顯比編譯型語言弱。所以,它不適合寫系統(tǒng)軟件壕曼。尤其是操作系統(tǒng)苏研,由于高度依賴于硬件控制,它應(yīng)該是不能寫的腮郊。

而且摹蘑,由于iOS的生態(tài)系統(tǒng)的高度封閉性,它也不能直接寫iOS應(yīng)用轧飞;對于Android纹蝴,雖然有適用于Android的解釋器,但其封裝還是有難度的踪少,而且針對于Android上的Python的庫(尤其是GUI相關(guān)的庫)和文檔不發(fā)達(dá)塘安,所以它目前也不適宜寫Android應(yīng)用。

有很多人把Python當(dāng)作“膠水語言”來使用援奢,即使用Python將其他語言編寫的程序進(jìn)行集成和封裝兼犯。在Google內(nèi)部的很多項(xiàng)目,例如Google應(yīng)用服務(wù)引擎集漾,使用C++編寫性能要求極高的部分切黔,然后用Python或Java/Go調(diào)用相應(yīng)的模塊。

這很難講具篇,不過纬霞,2004年,Python已在Google內(nèi)部使用驱显,Google召募許多Python高手诗芜,但在這之前就已決定使用Python。他們的目的是盡量使用Python埃疫,在不得已時(shí)改用C++伏恐;在操控硬件的場合使用C++,在快速開發(fā)時(shí)候使用Python栓霜。

——馬特利(Alex Martelli)翠桦,《Python技術(shù)手冊》的作者

Python目前的應(yīng)用

很多大公司,包括Google胳蛮、Yahoo等销凑,甚至NASA(美國航空航天局)都大量地使用Python。

目前Python主要有下列熱門領(lǐng)域的應(yīng)用:

  1. 爬蟲
    使用Requests構(gòu)建HTTP請求仅炊,使用selenium和PhantomJS獲取網(wǎng)頁內(nèi)容斗幼,使用BeautifulSoup解析HTML,可以高效地爬取數(shù)據(jù)茂洒。

  2. 科學(xué)計(jì)算孟岛、數(shù)據(jù)分析與數(shù)據(jù)可視化
    使用NumPy瓶竭、SciPy、matplotlib渠羞、Pandas斤贰、wordcloud等第三方庫進(jìn)行高等數(shù)學(xué)、線性代數(shù)等相關(guān)的科學(xué)計(jì)算次询、對數(shù)據(jù)進(jìn)行可視化輸出荧恍,使用jieba進(jìn)行分詞⊥偷酰可以部分替代付費(fèi)的MATLAB送巡、Office,而且在繪圖的信息獲取上比Office更加靈活盒卸。


    Matplotlib
  3. 人工智能與機(jī)器學(xué)習(xí)
    谷歌開發(fā)維護(hù)的TensorFlow以Python為主骗爆,進(jìn)而推動(dòng)了其他的關(guān)于人工智能的開發(fā),所以現(xiàn)在凡是人工智能蔽介、機(jī)器學(xué)習(xí)摘投,都離不開Python。


    使用TensorFlow的公司
  4. 交易
    有人通過爬蟲爬取新聞和交易信息虹蓄,通過數(shù)據(jù)分析和預(yù)測輔助決策犀呼;有人寫出交易的程序,如vn.py薇组。


    vn.py
  5. Web框架
    有Django這樣的功能齊全的框架外臂,也有Flask、Tornado這樣的輕量級框架律胀。使用Python作為Web框架的最大的好處就是可以以網(wǎng)站的形式輕松解決上面的問題宋光。許多大型網(wǎng)站就是用Python開發(fā)的,例如YouTube累铅、Instagram跃须,還有國內(nèi)的豆瓣。


    Django
  6. 硬件控制與物聯(lián)網(wǎng)
    盡管Python是解釋型語言娃兽,但樹莓派為代表的單板計(jì)算機(jī)解決了它在控制硬件上的問題。在它上面可以在Linux的環(huán)境下用Python控制GPIO尽楔,從而控制外圍硬件投储。另外,也有人正在開發(fā)硬件解釋器阔馋,可以在上面直接運(yùn)行Python代碼控制GPIO玛荞,如Python-on-a-chip。

樹莓派

兩大版本

Pyhon目前同時(shí)有兩個(gè)最新版本供下載呕寝。這是因?yàn)榧嫒菪缘膯栴}勋眯。

Python官網(wǎng)上同時(shí)提供兩種版本的最新版下載

Python 3.0于2008年12月3日發(fā)布,此版由于追求語言設(shè)計(jì)上的完美、不帶入過多的累贅客蹋,不完全兼容之前的Python源代碼塞蹭。由于Python擁有大量的第三方庫,所以這些庫都需要重寫以兼容新版本讶坯。到了今天番电,由于3.x版越來越普及,許多主要的第三方庫都完成了適配或有了替代品辆琅,而且有一些已經(jīng)開始拋棄2.x版的適配漱办,所以現(xiàn)在建議使用3.x版本進(jìn)行Python開發(fā)。

以下如涉及到版本問題婉烟,使用“Python 2”“Python 3”指代對應(yīng)版本系統(tǒng)娩井。

在Python 3.0發(fā)布的時(shí)候,同期的Python 2的版本為2008年10月2日發(fā)布的Python 2.6.0似袁。在此及之后的Python 2版本中也可直接或間接使用Python 3的一些特性撞牢,但并不是完全兼容。而在Python 3中也附帶有2to3來將適配于Python 2的代碼轉(zhuǎn)換為適配于Python 3的代碼叔营,但也不是萬能的屋彪。

之前放過的圖,圖中可以看出Python 2.7可以直接使用Python 3的print語句

Python 2的最后的版本為Python 2.7绒尊,但也是有更新的畜挥。

但是,正是由于上面的問題婴谱,我們在學(xué)習(xí)Python的時(shí)候需要特別注意Python的版本蟹但。雖然Python是最近才走進(jìn)大眾的視野的,但是許多學(xué)校的圖書館很早就藏有關(guān)于Python的較老的書籍谭羔,而它們一般都是基于Python 2編寫的华糖,如果在Python 3下運(yùn)行會(huì)報(bào)錯(cuò)。而且瘟裸,一般的書籍不會(huì)標(biāo)注Python的版本號(也許是編寫時(shí)想不到新版的Python會(huì)這樣)兼搏!所以在圖書館借閱關(guān)于Python的書籍的話病线,必須要翻閱其中的代碼暖眼,以便辨認(rèn)版本。

據(jù)我的經(jīng)驗(yàn)区赵,查看代碼時(shí)络凿,只要找輸出(print)語句,看它的寫法,十有八九就能準(zhǔn)確判斷版本:

Python 3中的輸出語句如同:

print("Hello World")

Python 2中的輸出語句如同:

print "Hello World"

簡而言之,就是帶不帶括號的區(qū)別:帶括號是3,不帶括號是2络断。

雖然Python 2.6襟沮、Python 2.7也可以在輸出語句上如同Python 3那樣寫膀跌,但是那個(gè)時(shí)候的程序員由于習(xí)慣原因是不會(huì)這么寫的遭商。

如果是購買書籍的話,如果是比較負(fù)責(zé)的編者或出版商捅伤,而且書籍是最近幾年發(fā)布的話劫流,這樣的問題可能會(huì)有所避免。

但是丛忆,Python 3與Python 2的區(qū)別絕不僅僅是print語句的變化祠汇,還有許多。這不屬于本教程內(nèi)容熄诡,感興趣的話可以自行查閱可很。

本教程基于Python 3的最新版本。

作業(yè)

  1. 上面對于Python的簡要介紹中使用了一些詞語凰浮,我在這里對于它們的解釋并不完全我抠,請自行查找關(guān)于它們的更多信息,盡量搞懂它們袜茧。(其實(shí)“面向?qū)ο蟆蔽乙矝]搞懂……)
  2. 在Python界中有一句話:“人生苦短菜拓,我用Python〉严茫”根據(jù)本節(jié)講述內(nèi)容說明原因(當(dāng)然纳鼎,如果你愿意查找資料,也可以不限于本節(jié)內(nèi)容來說明)递递。

參考資料

除0.1節(jié)提到的之外喷橙,還有:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末登舞,一起剝皮案震驚了整個(gè)濱河市贰逾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌菠秒,老刑警劉巖疙剑,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異践叠,居然都是意外死亡言缤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門禁灼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來管挟,“玉大人,你說我怎么就攤上這事弄捕∑ⅲ” “怎么了导帝?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長穿铆。 經(jīng)常有香客問我您单,道長,這世上最難降的妖魔是什么荞雏? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任虐秦,我火速辦了婚禮,結(jié)果婚禮上凤优,老公的妹妹穿的比我還像新娘悦陋。我一直安慰自己,他們只是感情好别洪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布叨恨。 她就那樣靜靜地躺著,像睡著了一般挖垛。 火紅的嫁衣襯著肌膚如雪痒钝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天痢毒,我揣著相機(jī)與錄音送矩,去河邊找鬼。 笑死哪替,一個(gè)胖子當(dāng)著我的面吹牛栋荸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凭舶,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晌块,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帅霜?” 一聲冷哼從身側(cè)響起匆背,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎身冀,沒想到半個(gè)月后钝尸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搂根,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年珍促,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剩愧。...
    茶點(diǎn)故事閱讀 39,745評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猪叙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沐悦,我是刑警寧澤成洗,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布五督,位于F島的核電站藏否,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏充包。R本人自食惡果不足惜副签,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望基矮。 院中可真熱鬧淆储,春花似錦、人聲如沸家浇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钢悲。三九已至点额,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間莺琳,已是汗流浹背还棱。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惭等,地道東北人珍手。 一個(gè)月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像辞做,于是被迫代替她去往敵國和親琳要。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容