基礎篇python
第一章程序員
1.0Python 簡介 web
說到Python語言,就不得不說一下它的創始人Guido van Rossum(1956 -- ?), 他在開發PYTHON語言以前曾使用過幾年的ABC語言,ABC是一門主要用於教學目的語言(教計算機系的學生如何設計一門開發語言),Guido 在開發PYTHON時借鑑了不少ABC語言的特性,因此後來人們包括Guido本身也認爲,PYTHON語言的前身就是ABC語言。關於創做PYTHON語言的初衷,Guido在1996年寫到:編程
在六年前的1989.12月份,我爲了在聖誕假期打發無聊時間找點事幹(估計是寫代碼找不到對象),決定爲我最近一直在構思的一門新的腳本語言寫個解釋器,這門語言的前身ABC(就Guido本人看來,ABC這種語言很是優美和強大,是專門爲專業的程序設計師使用的。可是ABC語言並無成功,究其緣由,吉多認爲是非開放形成的。吉多決心在Python中避免這一錯誤,並取得了很是好的效果,完美結合了C和其餘一些語言)語言更可能是被UNIX/C黑客使用,我選擇PYTHONP這個名字作爲這個開發項目的名字,起這個名字的一個緣由是由於我是Month Python’s Flying Circus(英國的一個電視喜劇)的超級粉絲。windows
就這樣,python在Guido手中誕生了,它的第一個版本實現是在MAC電腦上,一直在90年代,PYTHON的開放性、語法的簡潔性大受不少程序員的喜歡,不少人拿它來快速的開發一些腳本和工具,並不斷的向官方提交新的代碼和第三方模塊,所以PYTHON能作的事情也愈發多了起來,一些大公司像YAHOO、EBAY也開始在生產環境中使用PYTHON。到了2000年10月16號,PYTHON2.0發佈了,相比以前的1.x版本,實現了完整的垃圾回收,而且支持UNICODE,同時整個開發過程更加透明,社區對PYTHON的開發進度的影響逐漸增大。從2000年第一個2.0版本發佈到寫本書的2015止,2.X版本最主流使用的工業版本,雖然PYTHON官方於2008年就發佈了Python3.0,但因爲此版本並不徹底兼容以前的普遍使用的2.4版本,這致使不少基於2.4開發軟件跟本沒法在3.0的平臺 上運行,所以3.0的推廣也很是緩慢,爲解決這個問題,python官方很快又推出兼容2.4和3.0兩個版本的2.6,這個版本兼容了原來的2.4版本,又支持了不少3.0的特性,而且官方還開發了專門的幫助將2.x轉爲3.0版本的轉換工具,所以,python3.0的使用纔開始逐漸多了起來,不過,如今主流的工業版本依然是2.6和2.7過渡版本,所以本書主要仍是圍繞着2.7的版原本學習,不過同窗們不用擔憂,由於2.7支持了很是多3.x版本的特性,等到幾年後3.0版本普遍使用時,你由2.x轉向3.x會像由 windows xp轉向使用win 7同樣簡單。再說回Guido, 這哥們如今還掌控着python的發展方向,他於2005年加入谷歌工做,所以也推進了python在谷歌內部實現了普遍使用,2012年,他加入世界上最大的雲存儲公司Dropbox,該公司產品幾乎所有基於python開發,全世界的用戶天天在上面分享和上傳超過10億個文件。安全
1.1Python 安裝服務器
Python如今已經默認安裝在了全部的*nix發行版本上,對於Windows平臺,也只須要到Python官網(http://www.python.org)直接下載Windows版本就能夠了,但對於版本的選擇,可能好多新手會有點困惑,不知道選擇2.x or 3.x好,若是你如今還有這個困惑的話,表明你沒好好看上面的簡介,請回去本身複習,我這裏的建議是下載最新的2.x版本使用便可,網絡
除了官方提供的標準Python版本,還有一些其它的用於特定方向的發行版本,好比PyQt主要是用來作GUI圖形界面的,能夠用來代替Python的Tkinter,其它替代者還有wxPython、PyGTK等,還有PortablePython,是一個免安裝的Windows 發行版本,若是你想在不安裝任何python環境的狀況下就在windows上運行python程序,只須要把PortablePython 拷貝到你的Windows機器上便可框架
1.2 Python 是一門什麼樣的語言?運維
編譯型和解釋型
其實它和彙編語言是同樣的:也是有一個負責翻譯的程序來對咱們的源代碼進行轉換,生成相對應的可執行代碼。這個過程說得專業一點,就稱爲編譯(Compile),而負責編譯的程序天然就稱爲編譯器(Compiler)。若是咱們寫的程序代碼都包含在一個源文件中,那麼一般編譯以後就會直接生成一個可執行文件,咱們就能夠直接運行了。但對於一個比較複雜的項目,爲了方便管理,咱們一般把代碼分散在各個源文件中,做爲不一樣的模塊來組織。這時編譯各個文件時就會生成目標文件(Object file)而不是前面說的可執行文件。通常一個源文件的編譯都會對應一個目標文件。這些目標文件裏的內容基本上已是可執行代碼了,但因爲只是整個項目的一部分,因此咱們還不能直接運行。待全部的源文件的編譯都大功告成,咱們就能夠最後把這些半成品的目標文件「打包」成一個可執行文件了,這個工做由另外一個程序負責完成,因爲此過程好像是把包含可執行代碼的目標文件鏈接裝配起來,因此又稱爲連接(Link),而負責連接的程序就叫……就叫連接程序(Linker)。連接程序除了連接目標文件外,可能還有各類資源,像圖標文件啊、聲音文件啊什麼的,還要負責去除目標文件之間的冗餘重複代碼,等等,
動態語言和靜態語言
(1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。
(2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。
強類型定義語言和弱類型定義語言
(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。
(2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。
強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!
1.3Python能作什麼?
Python是一門綜合性的語言,你幾乎能在計算機上經過Python作任何事情,如下是Python應該最普遍的幾個方面:
1. 網絡應用:包括web網站 、服務器後臺服務等,在這方面Python有優秀的web框架如Django\Tornado\Flask等,網絡服務框架有著名的Twisted,異步通訊有牛X的eventlet.
2. 科學運算:隨着NumPy、SciPy、matplotlib、ETS等衆多程序庫的開發,Python愈來愈適合於作科學計算。與科學計算領域最流行的商業軟件MATLAB相比,Python是一門真正的通用程序設計語言,比MATLAB所採用的腳本語言的應用範圍更普遍,有更多程序庫的支持,適用於Windows和Linux等多種平臺,徹底免費而且開放源碼。雖然MATLAB中的某些高級功能目前還沒法替代,可是對於基礎性、前瞻性的科研工做和應用系統的開發,徹底能夠用Python來完成。
3. GUI程序:python提供了多個圖形開發界面的庫,包括PyQt,WxPython,自帶的有Tkinter,這些庫容許Python程序員很方便的建立完整的、功能健全的GUI用戶界面。
4. 系統管理工具:Python能夠是作運維人員最喜歡用的語言了,能夠用它來輕鬆的開發自動化管理工具、監控程序等,事實上如今不少開源軟件也都是用Python開發的,如用於IT配置管理的SaltStack\Ansible, 作虛擬化的OpenStack,作備份用的Bacula等。
5. 其它程序:你知道嗎?Python 用來寫爬蟲也是很拿手的,還有作遊戲,以前看社區裏有個哥們花了不到300行代碼就實現了《憤怒的小鳥》的遊戲,還能夠用來作嵌入式開發、作驅動程序等,總之,Python能作的事情仍是很是多的,好好學吧,很快你就會fall in love with this great language!
第一個Python程序