本章介紹了Python的背景知識,包括什麼是Python、Python的起源以及Python的一些關鍵特性。
python
Python是一門優雅而健壯的編程語言,它繼承了傳統編譯語言的強大性和通用性,同時也借鑑了簡單腳本和解釋語言的易用性。正則表達式
貴鐸·範·羅薩姆(Guido van Rossum)於1989年末始創了Python;1991年初,Python發佈了第一個公開發行版。shell
Python是一門強大的、能夠進行系統調用的解釋型腳本語言;內建有經常使用的高級數據結構,好比列表(大小可變數組)和字典(哈希表),易讀,可縮短開發時間和代碼量。編程
面向對象編程爲數據和邏輯相分離的結構化和過程化編程添加了新的活力。數組
Python提供了基本的開發模塊,能夠在它上面開發軟件;並且當這些須要擴展和增加時,Python的可插入性和模塊化架構則能使項目易於管理。數據結構
代碼中的瓶頸,能夠做爲Python擴展用C重寫。Python的標準實現使用C語言完成(也就是CPython),因此要使用C和C++編寫Python擴展。架構
Python的Java實現被稱做Jython,要使用Java編寫其擴展。less
Python針對.NET或Mono平臺的C#實現稱爲IronPython,可使用C#或者VB.Net擴展。編程語言
Python是用C寫的,又因爲C的可移植性,使得Python能夠運行在任何帶有ANSI C編譯器的平臺上。ide
關鍵字少、結構簡單、語法清晰。
沒有命令式符號——美圓符號($)、分號(;)、波浪號(~)等等。
Python自己易學+易讀=>易維護
一旦Python因爲錯誤崩潰,解釋程序就會轉出一個「堆棧跟蹤」,裏面有可用到的所有信息,包括程序崩潰的緣由以及出錯的段代碼(文件名、行數、函數調用等等)。
Python有許多面向其餘系統的接口,它的功能足夠強大,自己足夠強壯,因此徹底可使用 Python 開發整個系統的原型。
Python標準庫很完備,第三方模塊或包也不少。對於所要作的所有事情,就是來個「即插即用」(固然,也要自行配置一番)。
內存管理由解釋器負責,能減小錯誤,節省開發時間。
Python是一種解釋型語言,而Python其實是字節編譯的,其結果生成一種近似機器語言的中間形式。
Python源文件用.py擴展名,當源文件被解釋器加載或者顯式地進行字節碼編譯時,會被編譯成字節碼。根據調用解釋器的方式不一樣,源文件會被編譯成.pyc或.pyo文件。
最新的Linux、MacOS已經安裝好;Windows系統可到 python.org/downloads/ 本身下載安裝。
Linux:檢查登錄啓動腳本,找到set path 或 PATH= 命令,添加解釋器完整路徑。
Windows:將安裝路徑添加到搜索路徑中(計算機->屬性->高級系統設置->高級->環境變量->系統變量->Path)。
添加路徑以後,在 命令行/DOS 中輸入Python,便可啓動Python解釋器。
Linux:①經過解釋器執行
$ python script.py
②直接執行。在腳本第一行使用shell魔術字符串
#!/usr/bin/python
以上是在Python安裝在/usr/local/bin/目錄下時使用,若是不知道Python路徑,可用
#!/usr/bin/env python
env一般位於/usr/bin/或/bin/目錄中,它能夠在PATH目錄中查找,也規定了一些系統環境變量。
若是將解釋器路徑寫死在腳本文件中,可能在有些系統中找不到解釋器而產生錯誤。
Windows:①同Linux,經過解釋器執行。
②在安裝了帶有PythonWin的Python時,雙擊便可執行。
Windows系統:安裝Python後,在 安裝文件夾\Doc\ 裏有一個Python2x.chm的離線文檔。
原書網站提供大多數Python版本的文檔:http://corepython.com,單擊左側的「Python Docs」
Perl:腳本語言,遠超標準shell腳本,正則表達式匹配引擎強大(Python即基於此);
語言晦澀,符號語法過分使用,學習困難。
Java:語法繁瑣。
Ruby:徹底的面向對象,沒有字節碼解釋器。
Tcl:可與Python相提並論;數據類型有侷限。
List:Python借用其一些有價值的特性。
JavaScript:很是相似Python,學好JavaScript後學Python易如反掌;基於原型系統,而Python遵循傳統的面向對象系統。
CPython的一個侷限就是每一個Python函數調用都會產生一個C函數調用(棧幀),即同時產生的函數調用有限,所以Python難以實現用戶級的線程庫和複雜遞歸應用。
能夠經過使用一個「stackless」的Python實現來突破這個限制,一個C棧幀能夠擁有任意數量的Python棧幀。這樣就可以擁有幾乎無窮的函數調用,並能支持巨大數量的線程。
Stackless惟一的問題就是它要對現有的CPython解釋器作重大修改,因此它幾乎是一個獨立的分支。
另外一個名爲Greenlets的項目也支持微線程,它是一個標準的C擴展,所以不須要對標準Python解釋器作任何修改。
經過如下網址你能瞭解更多信息:
編寫腳本,創建自動運行代碼行,輸出"Hello World!"
1 #!/usr/bin/env python 2 print 'Hello World'