Python基礎手冊 1 —— Python語言介紹

python-logo.png

Python 是一門優(yōu)雅而健壯的編程語言,它繼承了傳統(tǒng)編譯語言的強大性和通用性,同時也借鑒了腳本語言和解釋語言的簡單性和易用性。


一、Python 的歷史

Python是由創(chuàng)始人貴鐸·范·羅薩姆(Guido van Rossum)在阿姆斯特丹于1989年圣誕節(jié)期間,為了打發(fā)圣誕節(jié)的無趣,開發(fā)的一個新的解釋型腳本語言。之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是因為他是BBC當時正在熱播的喜劇連續(xù)劇“Monty Python”的愛好者。

Guido van Rossum.jpg

Python的第一個公開發(fā)行版發(fā)行于1991年,它是純粹的自由軟件, 源代碼和解釋器(CPython)都遵循 GPL(GNU General Public License)協(xié)議。


二、Python 的設計思想

Python被設計成是 “符合大腦思維習慣” 的,采用極簡主義的設計理念,加以統(tǒng)一規(guī)范的交互模式。這使得Python易于學習、理解和記憶。Python 開發(fā)者的哲學是 “用一種方法,最好是只有一種方法來做一件事”。

Python是完全面向對象的編程語言,函數(shù)、模塊、數(shù)字、字符串等內置類型都是對象。它的類支持多態(tài)、操作符重載、和多重繼承等高級OOP概念,并且Python特有的簡潔的語法和類型使得OOP十分易于使用。當然OOP只是Python的一個選擇而已,就像C++一樣,Python既支持面向對象編程,也支持面向過程編程的模式。

Python是一種解釋型語言,目前Python的標準實現(xiàn)方式是將源代碼的語句編譯(轉換)為字節(jié)碼格式,然后通過解釋器將字節(jié)碼解釋出來。Python沒有將代碼編譯成底層的二進制代碼,所以相較于C和C++等編譯型語言,Python的執(zhí)行速度會慢一些。但是Python的解釋型語言特性提高了開發(fā)者開發(fā)速度,同時使它擁有解釋型語言易于編寫和調試等優(yōu)點。

Python本身被設計為可擴展的,并非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C/C++語言來編寫擴充模塊。Python為我們提供了非常完善的基礎代碼庫,覆蓋了正則表達式、網(wǎng)絡、多線程、GUI、數(shù)據(jù)庫、等領域。除了內置的庫外,Python還有大量的第三方庫,供你直接使用。

Python編譯器本身也可以被集成到其它需要腳本語言的程序內,因此,很多人還把Python作為一種“膠水語言”(glue language)使用,使用Python將其他語言編寫的程序進行集成和封裝。2004 年,Python 已在Google 內部使用。Google Engine使用C++編寫性能要求極高的部分,然后用Python或Java/Go調用相應的模塊。他們的目的是 “Python where we can, C++ where we must",在操控硬件的場合使用 C++,在快速開發(fā)時候使用 Python。

注:我們在任意一個Python的交互解釋器中輸入:import this 命令,就可以看到Python的設計原則。EIBTI就是 “明了勝于晦澀” 的簡寫。

clipboard.png



三、Python 的優(yōu)點

1、軟件質量高

Python秉承了簡潔、清晰的語法,以及高度一致的編程模式。始終如一的設計風格,可以保證開發(fā)出相當規(guī)范的代碼。

針對錯誤,Python 提供了“安全合理”的退出機制。Python支持異常處理,能有效捕獲和處理程序運行時發(fā)生的錯誤,使你能夠監(jiān)控這些錯誤并進行處理。
Python代碼能打包成模塊和包,方便管理和發(fā)布,很適合團隊協(xié)同開發(fā)。

2、開發(fā)速度快

Python致力于開發(fā)速度的最優(yōu)化:簡潔的語法、動態(tài)的類型、無需編譯、豐富的庫支持等特性使得程序員可以快速的進行項目開發(fā)。Python往往只要幾十行代碼就可以開發(fā)出需要幾百行C代碼的功能。

Python解析器能很方便地進行代碼調試和測試,也可作為一個編程接口嵌入一個應用程序中。 這就使的在開發(fā)過程中可以直接進行調試,而避免了耗時而又麻煩的編譯過程,大大提高了開發(fā)的速度和效率。

在Python 中,由于內存管理是由Python 解釋器負責的,所以開發(fā)人員就可以從內存管理事務中解放出來,僅僅致力于開發(fā)計劃中首要的應用程序設計。這使得Python編寫的程序錯誤更少、更加健壯、開發(fā)周期更短。

3、功能強大

Python的功能足夠強大,本身也足夠強壯, 它還有許多面向其他系統(tǒng)的接口,所以完全可以使用 Python 開發(fā)整個系統(tǒng)的原型。

為了完成更多特定的任務,Python內置了許多預編碼的庫工具,從正則表達式到網(wǎng)絡編程,再到數(shù)據(jù)庫編程都支持。在web領域、數(shù)據(jù)分析領域等,Python還有強大的框架幫你快速開發(fā)你的服務。例如:Django、TruboGears、Pylons等。

4、易于擴展

Python易于擴展,(對于CPython)可以通過C或C++編寫的模塊進行功能擴展,使其能夠成為一種靈活的黏合語言,可以腳本化處理其他系統(tǒng)和組件的行為。

5、跨平臺

Python是跨平臺的。在各種不同的操作系統(tǒng)上(Linux、windows、MacOS、Unix等)都可以看到Python 的身影。因為Python 是用C 寫的,又由于C 的可移植性,使得Python 可以運行在任何帶有ANSI C 編譯器的平臺上。盡管有一些針對不同平臺開發(fā)的特有模塊,但是在任何一個平臺上用Python 開發(fā)的通用軟件都可以稍事修改或者原封不動的在其他平臺上運行。這種可移植性既適用于不同的架構,也適用于不同的操作系統(tǒng)。


四、Python 的缺點

第一個缺點就是運行速度慢。和C/C++程序相比Python的運行速度非常慢,因為Python是解釋型語言,你的代碼在執(zhí)行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程序是運行前直接編譯成CPU能執(zhí)行的機器碼,所以非常快。不過,根據(jù)二八定律,大多數(shù)程序對速度要求不高。某些對運行速度要求很高的情況,Python設計師傾向于使用JIT技術,或者用使用C/C++語言改寫這部分程序。Python開發(fā)速度帶來的效益往往比執(zhí)行速度帶來的損失更為重要,尤其是在現(xiàn)代計算機高速的處理能力情況下。

第二個缺點就是代碼不能加密。如果要發(fā)布你的Python程序,實際上就是發(fā)布源代碼。這一點跟C語言不同,C語言不用發(fā)布源代碼,只需要把編譯后的機器碼發(fā)布出去。要從機器碼完整反推出C代碼是不可能的。


五、Python 的開發(fā)方向和應用場景

Web網(wǎng)絡開發(fā):

Python提供豐富的模塊支持sockets編程,多線程編程,能方便快速地開發(fā)網(wǎng)絡服務程序。支持最新的XML技術,支持json語言,數(shù)據(jù)庫編程,而且Python的ORM框架,使得操作數(shù)據(jù)庫非常方便。
Python還有優(yōu)秀的Django、Tornado、Flask等web開發(fā)框架,還用眾多的開源插件的支持,足以適用各種不同的web開發(fā)需求。

自動化運維。

Python對操作系統(tǒng)服務的內置接口,使其成為編寫可移植的維護操作系統(tǒng)的管理工具和部件的理想工具。Python程序可以搜索文件和目錄樹,可以運行其他程序,可以使用進程和線程并行處理。

網(wǎng)絡爬蟲。

在文本處理方面,python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發(fā)。

圖形處理。

有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。 多媒體應用 ,Python的PyOpenGL模塊封裝了“OpenGL應用程序編程接口”,能進行二和三維圖像處理。PyGame模塊可用于編寫游戲軟件

除此之外,Python還應用于游戲、人工智能、大數(shù)據(jù)分析、機器人等領域。



六、Python的種類

Cpython:

執(zhí)行過程:程序----(c解釋器)----(字節(jié)碼)----(機器碼)-----cpu
?? Python的官方版本,這是Python初始的以及維護得最好的實現(xiàn),使用C編寫。新的語言特性一般會最先在這里出現(xiàn)。CPython實現(xiàn)會將源文件(py文件)轉換成字節(jié)碼文件(pyc文件),然后運行在Python虛擬機上。

Jyhton:

執(zhí)行過程:程序----(java解釋器)----(字節(jié)碼)----(機器碼)-----cpu
?? Python的Java實現(xiàn),此實現(xiàn)可用作Java應用程序的腳本語言,或可用于使用Java類庫創(chuàng)建應用程序,它也經常用于為Java庫創(chuàng)建測試。Jython會將Python代碼動態(tài)編譯成Java字節(jié)碼,然后在JVM上運行。

PyPy:

執(zhí)行過程:程序----(字節(jié)碼)----(機器碼)-----cpu
?? 完全用Python編寫的Python實現(xiàn)。它支持在其他實現(xiàn)中沒有找到的幾個高級功能,如stackless支持和一個Just in Time編譯器。PyPy將Python的源碼翻編譯成字節(jié)碼再編譯成機器碼。

其他類別:Python for .NET、IronPython、RubyPython、Brython ...


七、Python版本

python有兩個版本,python 2.X和python 3:
?? python 2.x的最后一個版本是python2.7(于2010年發(fā)布),官方將支持到2020年。
?? python 3.X的第一個版本python 3.0(于2008年發(fā)布)

python 3.X不兼容 Python 2.X版本,官方也有發(fā)布python2.6作為過渡到Python 3.0的版本,2.6之后的版本都為過渡版本。
?? 為什么要開發(fā) Python 3.X版本呢?因為 python發(fā)展了20多年,里面有很多重復的功能,重復的模塊,很多代碼也變得不那么簡潔,所以Guido決定進行一次徹底的升級,原則是去繁從簡,從而有了后續(xù)的 Python 3.X版本。


《Python基礎手冊》系列:

Python基礎手冊 1 —— Python語言介紹
Python基礎手冊 2 —— Python 環(huán)境搭建(Linux)
Python基礎手冊 3 —— Python解釋器
Python基礎手冊 4 —— 文本結構
Python基礎手冊 5 —— 標識符和關鍵字
Python基礎手冊 6 —— 操作符
Python基礎手冊 7 —— 內建函數(shù)
Python基礎手冊 8 —— Python對象
Python基礎手冊 9 —— 數(shù)字類型
Python基礎手冊10 —— 序列(字符串)
Python基礎手冊11 —— 序列(元組&列表)
Python基礎手冊12 —— 序列(類型操作)
Python基礎手冊13 —— 映射(字典)
Python基礎手冊14 —— 集合
Python基礎手冊15 —— 解析
Python基礎手冊16 —— 文件
Python基礎手冊17 —— 簡單語句
Python基礎手冊18 —— 復合語句(流程控制語句)
Python基礎手冊19 —— 迭代器
Python基礎手冊20 —— 生成器
Python基礎手冊21 —— 函數(shù)的定義
Python基礎手冊22 —— 函數(shù)的參數(shù)
Python基礎手冊23 —— 函數(shù)的調用
Python基礎手冊24 —— 函數(shù)中變量的作用域
Python基礎手冊25 —— 裝飾器
Python基礎手冊26 —— 錯誤 & 異常
Python基礎手冊27 —— 模塊
Python基礎手冊28 —— 模塊的高級概念
Python基礎手冊29 —— 包

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,637評論 25 708
  • 本節(jié)內容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,437評論 2 30
  • TITLE: 編程語言亂燉 碼農最大的煩惱——編程語言太多。不是我不學習,這世界變化快! 有時候還是蠻懷念十幾、二...
    碼園老農閱讀 5,344評論 2 35
  • 今天,我給奶奶做賀卡,因為再過幾天就是奶奶的生日啦! 媽媽給我了兩張賀卡,一張綠色的,一張紅色的。還有許多漂亮的貼...
    德之閱讀 1,609評論 4 6
  • 老張在開頭說那個女孩子最佩服你的是有著從頭再來的決心,我在這里已想借這樣一句話表達下我對敢于放棄所有,能夠選擇從頭...
    旭日而生閱讀 561評論 0 3