第一篇 Python語言基礎
第1章 進入Python的世界
Python是一種動態解釋型的程式設計語言。Python簡單易學、功能強大,支援物件導向、函數式程式設計。Python可以在Windows、UNIX等多個作業系統上使用,同時Python可以在Java、.NET等開發平臺上使用,因此也被稱為“膠水語言”。Python的簡潔性、易用性使得開發過程變得簡練,特別適用于快速應用開發。
本章的知識點:
·Python的特徵
·Python開發環境的配置
·Python程式的編寫
·不同開發平臺對Python的支援
1.1 Python的由來
Python語言是由Guido van Rossum在1989年開發的,並最終於1991年初發表。Guido van Rossum曾是CWI公司的一員,使用解釋性程式設計語言ABC開發應用程式,這種語言在軟體發展上有許多局限性。由於他要完成系統管理方面的一些任務,需要獲取Amoeba機作業系統所提供的系統調用能力。雖然可以設計Amoeba的專用語言實現這個任務,但是van Rossum計畫設計一門更通用的程式設計語言。Python就此誕生了。
Python語言已經誕生20多年了,正逐漸發展為主流程式設計語言之一,目前在TIOBE程式設計語言排行榜中長期佔據第八的位次。由於Python語言的動態性,程式解釋執行的速度比編譯型語言慢。但是隨著Python語言的不斷優化,一些諸如PyPy項目的不斷發展,以及電腦硬體技術的不斷發展,動態語言已經越來越受到工業領域的重視。其中的代表性語言有Python、Ruby、SmallTalk、Groovy等。
眾所周知,Java是工業應用領域認可的開發語言。Java與C++相比使用更容易,內部結構也相對簡單。而Python的語法特性使得程式設計變得更輕鬆,用Python能編寫出比Java可讀性更強的代碼。隨著Jython等解譯器的出現,使得Python可以在Java虛擬機器上運行。這樣Python可以使用Java豐富的應用套裝程式。Python與讀者熟知的JavaScript非常相似,都是解釋執行,而且語法結構有很多相同的地方。JavaScript是流覽器端的客戶指令碼語言,而Python也可以用於Web方面的開發。
Python作為腳本式語言,吸收了Perl、Tcl等語言的優點,這使得Python具備Tcl的擴展性,同時又具備Perl的文本解析和匹配能力。Python與Lisp也有相似之處,Python可以實現函數式的程式設計模型。
1.2 Python的特色
程式設計語言在不斷發展,從最初的組合語言到後來的C、Pascal語言,發展到現在的C++、Java等高級程式設計語言。程式設計的難度在不斷減小,軟體的開發和設計已經形成了一套標準,開發工作已經不再是複雜的任務。最初只能使用機器碼編寫代碼,而現在可以使用具有良好調試功能的IDE環境程式設計。Python使用C語言開發,但是Python不再有C語言中的指標等複雜資料類型。Python的簡潔性使得軟體的代碼大幅度地減少,開發任務進一步簡化。程式師關注的重點不再是語法特性,而是程式所要實現的任務。Python語言有許多重要的特性,而且有的特性是富有創造性的。
1.物件導向的特性
物件導向的程式設計解決了結構化程式設計的複雜性,使得程式設計更貼近現實生活。結構化程式設計把資料和邏輯混合在一起,不便於程式的維護。物件導向的程式設計抽象出物件的行為和屬性,把行為和屬性分離開,但又合理地組織在一起。Python語言具有很強的物件導向特性,而且簡化了物件導向的實現。它消除了保護類型、抽象類別、介面等物件導向的元素,使得物件導向的概念更容易理解。
2.內置的資料結構
Python提供了一些內置的資料結構,這些資料結構實現了類似Java中集合類的功能。Python的資料結構包括元組、清單、字典、集合等。內置資料結構的出現簡化了程式的設計。元組相當於“唯讀”的陣列,清單可以作為可變長度的陣列使用,字典相當於Java中的HashTable類型。內置資料結構的具體使用方法詳見第4章。
3.簡單性
Python語言的關鍵字比較少。它沒有分號、begin、end等標記,代碼塊使用空格或製表鍵縮進的方式來分隔。Python的代碼簡潔、短小,易於閱讀。Python簡化了迴圈語句,即使程式結構很複雜也能快速讀懂。詳細資訊請參考第2章的相關內容。
4.健壯性
Python提供了異常處理機制,能捕獲程式的異常情況。此外Python的堆疊跟蹤物件能夠指出程式出錯的位置和出錯的原因。異常機制能夠避免不安全退出的情況,同時能説明程式師偵錯工具。詳細資訊請參考第9章的相關內容。
5.跨平臺性
Python會先被編譯為與平臺相關的二進位碼,然後再解釋執行。這種方式和Java類似,但Python的執行速度提高了。Python編寫的應用程式可以運行在Windows、UNIX、Linux等不同的作業系統上。在一種作業系統上編寫的Python代碼只需做少量的修改,就可以移植到其他的作業系統上。
6.可擴展性
Python是採用C開發的語言,因此可以使用C擴展Python,可以給Python添加新的模組、新的類。同時Python可以嵌入C、C++語言開發的專案中,使程式具備指令碼語言的特性。
7.動態性
Python與JavaScript、PHP、Perl等語言類似,它不需要另外聲明變數,直接賦值即可創建一個新的變數。
8.強類型語言
Python的變數創建後會對應一種類型,它可根據賦值運算式的內容決定變數的類型。Python在內部建立了管理這些變數的機制,不同類型的變數需要類型轉換。
9.應用廣泛
Python語言應用於資料庫、網路、圖形圖像、數學計算、Web開發、作業系統擴展等領域。有許多協力廠商庫支持Python。例如,PIL庫(目前已經不再維護,取而代之的有Pillow)用於影像處理、NumPy庫用於數學計算、WxPython庫用於GUI程式的設計、Django框架用於Web應用程式的開發等。
1.3 第一個Python程式
Python的原始程式碼檔以“py”作為尾碼。下面編寫一段簡單的Python程式,創建一個名為hello.py的檔,用於輸出字串“hello world”。
01
if __name__ == "__main__":
02 print("hello world")
【代碼說明】
·第1行代碼相當於C語言中的main()函數,是Python程式的入口。詳細用法請參考第5章的相關內容。
·第2行代碼使用print語句輸出字串“hello
world”。
輸出結果如下所示。
hello world
Python的print語句用於輸出字串的內容,即把雙引號中的內容輸出到控制台。Python的輸入、輸出是通過“流”實現的,上述print語句把字串的內容輸出到標準輸出流,即輸出到控制台。流也可以把結果輸出到檔、印表機等,關於流的詳細用法請參考7.3節的內容。
Python程式的運行非常簡單,命令格式如下所示。
python python_file_path + python_file.py
其中python_file.py表示Python的原始程式碼檔,python_file_path表示python_file.py所在的路徑。在DOS視窗中輸入如圖1-1所示的命令,運行文件hello.py。
圖1-1 Python程式的運行
這種運行方式不夠直觀,而且不便於程式的調試。後面將介紹如何在編輯器EditPlus和開發工具PyCharm中運行Python程式。
1.4 搭建開發環境
Python開發環境的安裝和配置非常簡單。Python可以在多個平臺進行安裝和開發,IPython是非常流行、強大而且易用的Python安裝包。本節將介紹IPython的安裝和Python互動式命令列的使用。
1.4.1 Python的下載和安裝
在UNIX系統上預設安裝了Python,Python的可執行檔被安裝在/usr/local/bin目錄中,庫檔被安裝在/usr/local/python目錄中。雖然系統預設安裝了Python2與Python3兩個版本,但是在終端中的Python預設為Python2,目前一般為Python2.7.5。要使用Python3則需要在終端中輸入python3,或者修改默認的版本。而在Windows環境中,Python可以被安裝到任何目錄中。讀者可以到官方網站www.python.org下載Python3.3,官方網站提供了Windows、UNIX等不同作業系統的Python安裝軟體。
用戶也可以安裝IPython互動式shell,比預設的終端好用很多,支援自動縮進,並且內置了很多有用的功能和函數。其官網地址為http://ipython.org。它可以在任何作業系統上使用。Windows使用者在安裝IPython前需要先安裝Anaconda。Anaconda是一種安裝管理的程式,使用它可以很方便地完成Python的升級等操作,並且其自帶了非常多的Python庫,其下載地址為:http://continuum.io/downloads。選擇適合用戶機器的版本然後安裝即可。安裝完成後,使用者會發現除了系統預設的cmd.exe外,多了Anaconda Command Prompt的終端,使用者可以直接使用該終端或者使用系統預設的cmd.exe。打開終端後,輸入python然後按回車鍵,可能會發現Python的版本為2.7.5或者其他,而不是我們想要的Python3.X。沒有關係,打開任意一個終端,輸入以下命令:
conda update anaconda
oonda create –n py3k
python=3.3 anaconda
activate py3k
然後在終端中輸入ipython,這時將顯式Python版本資訊、IPython的版本資訊,並啟動交互性命令視窗。由於目前Anaconda支持的版本默認是Python2.7,所以每次要使用Python3.3時都需要先切換到py3k下。相關示意圖如圖1-2和圖1-3所示。
注意 在IPython交互環境中輸入help可以查看説明資訊。
1.4.2 互動式命令列的使用
IPython安裝成功後,可以選擇使用Anaconda自帶的終端或者系統終端。進入終端後,輸入ipython就可以啟動交互環境。若是使用原生的Python則只需輸入python後回車即可啟動命令列程式。本書將使用IPython進行介紹。
通過命令列可以直接向解譯器輸入語句,並輸出程式的運行結果。命令列視窗中的“IN[1]”(原生的為“>>>”)提示符後可以輸入Python程式。下面使用print語句輸出字串“hello world”,如圖1-4所示。
當然也可以在命令列視窗中輸入多行Python代碼。下麵把hello.py中的代碼輸入到命令列視窗。當輸入完程式的最後一行,按兩次回車鍵後即可結束程式,並輸出程式的運行結果,如圖1-5所示。
注意 如果要退出互動式命令列,輸入exit,然後按下回車鍵即可。
1.5 Python的開發工具
Python的開發工具非常豐富,有許多強大的IDE(Integrated Development Environment)工具,如Komodo、PythonWin、Eclipse、PyCharm等。這些工具不僅支援圖形化操作,而且具備編輯、調試等功能。此外文字編輯器也可作為Python的開發環境,如EditPlus、Vi等。PyCharm是JetBRAINS公司的開發的Python IDE,功能強大,近期還發佈了開源社區版本,非常適合於學習。
1.5.1 PyCharm的使用
PyCharm是非常好用的一款跨平臺的IDE,使用Java開發,有收費版本和社區免費版,本書將使用社區免費版。下載地址是 http://www.jetbrains.com/pycharm/download/index. html,下載後安裝即可。
安裝完成後,首次運行程式會要求設置主題等,可以選擇跳過這一步或者選擇自己喜歡的主題。設置完後重啟,便可進入程式。因為是IDE,所以首先要創建一個專案,這時會要求設置Python路徑。按照要求一步步設置即可。
安裝完成後,首次運行程式會要求設置主題等,可以選擇跳過這一步或者選擇自己喜歡的主題。設置完後重啟,便可進入程式。因為是IDE,所以首先要創建一個專案,這時會要求設置Python路徑。按照要求一步步設置即可。
注意 如果使用的是Anaconda,需要選擇envs目錄下py3k中的python.exe,否則將會使用默認的Python2.7版本。
PyCharm自帶了Python命令列交互終端,可以很方便地運行代碼和做相關的測試,滑鼠移動到左下角,按一下Terminal按鈕即可打開,非常方便。
按一下【File】|【New】功能表,選擇對應的檔案類型後便可以新建檔,並在其中編寫Python程式。現在開始創建hello_world.py檔,編寫完後選擇【Run】功能表中的Run命令或者按Alt+Shift+F10複合鍵即可運行代碼,如圖1-6所示。
除此之外,PyCharm還支持快捷跳轉、代碼重構、代碼測試、版本控制、調試等高級功能。
1.5.2 Eclipse IDE的介紹
Eclipse是Java開發的一個整合式開發環境,而且是一個開源專案。Eclipse的擴展性非常強,Eclipse不僅可以作為Java的IDE使用,而且還可以開發大量的外掛程式支援其他類型的語言,如C、C++、Python、PHP等。如果要在Eclipse平臺上開發Python,需要下載PyDev這個外掛程式。easyeclipse網站提供了Eclipse的各種外掛程式下載,而且可以獲取單獨運行的Easy Eclipse for Python。下載地址為www.easyeclipse.org。
Eclipse的功能非常強大,它實現了Python代碼的語法加亮、代碼提示和代碼補全等智慧化的功能。此外Eclipse提供了比PythonWin更強大的調試能力,而且還支援Jython、Pyunit、團隊開發等其他功能。
在Eclipse中,原始程式碼被組織到專案(project)中。Eclipse使用者介面的結構劃分為視圖(View)與編輯器(Editor)。視圖與編輯器的例子包括:原始程式碼大綱視圖、Java原始程式碼編輯器、Python原始程式碼編輯器和檔案系統導航視圖。Eclipse使用者介面包含各種視圖(perspective)。視圖是通常在執行某種類型活動時使用的一組視窗。Eclipse中的標準視圖包括:Debug、Java Browsing、Java、Java Type Hierarchy、Plug-in Development、CVS Repository Exploring、Resource和Install/Update。Easy Eclipse for Python提供了一個Pydev視圖。當啟動調試模式時,Eclipse會自動切換到Debug視圖。本書9.3節將介紹Eclipse for Python的配置和調試方法。
下面在Eclipse的開發環境中編寫輸出字串“hello world”的程式,如圖1-7所示。
注意 安裝Pydev之前,需要先在電腦中安裝Python。
1.5.3 EditPlus編輯器環境的配置
Python也可以使用編輯器進行開發。例如,文本編輯軟體EditPlus也能成為Python的編輯、執行環境,甚至可以用於偵錯工具。EditPlus具備語法加亮、代碼自動縮進等功能。下面介紹一下如何配置EditPlus編輯器的開發環境。
1.添加Python群組
運行EditPlus,選擇【工具】|【配置使用者工具】命令,打開【參數】對話方塊。按一下【添加工具】按鈕,在彈出的功能表中選擇【程式】命令。新建的群組名稱命名為Python,在【功能表文本】文字方塊中輸入python,在【命令】文字方塊中輸入Python的安裝路徑,在【參數】文字方塊中輸入$(FileName),在【起始目錄】文字方塊中輸入$(FileDir)。勾選【捕獲輸出】選項,Python程式運行後的輸出結果將顯示在EditPlus的輸出欄。否則,運行Python程式後將彈出命令列視窗,並把結果輸出到命令列中。設置後如圖1-8所示。
按一下【確定】按鈕,新建一個Python檔,【工具】功能表下將會出現python選項。按一下該選項,或使用快速鍵Ctrl+1就可以運行Python程式。
2.設置Python高亮和自動完成
EditPlus不僅可以作為Python的開發環境,還支援Java、C#、PHP、HTML等其他類型的語言。不同語言的語法高亮和自動完成的表現形式各不相同。為了實現語法加亮和自動完成功能,需要下載兩個特徵檔,下載位址為http://www.editplus.com/files/pythonfiles.zip。下載後把文件python.acp和python.stx解壓到EditPlus的安裝目錄下。acp尾碼的檔表示自動完成的特徵檔,stx尾碼的檔表示語法加亮的特徵檔。在編寫Python代碼之前,需要先在EditPlus中設置這些特徵檔。
(1)選擇【檔】|【設置與語法】選項,在【檔案類型】清單中選擇【python】選項,在【描述】文字方塊中輸入python,在【副檔名】文字方塊中輸入py。
(2)在【設置與語法】選項卡中,在【語法檔】文字方塊中輸入python.stx的路徑,在【自動完成】文字方塊中輸入python.acp的路徑,如圖1-9所示。
(3)Python的語法中不使用begin、end或{、}區分代碼塊,而是使用冒號和代碼縮進的方式區分代碼之間的層次關係。按一下【定位字元/縮進】按鈕,打開【定位字元與縮進】對話方塊,設置Python代碼的縮進方式,如圖1-10所示。在使用IDE工具時,輸入冒號代碼會自動縮進,用EditPlus也可以設置該功能。在【定位字元】和【縮進】文字方塊中分別輸入空格的個數,一般設置為4。選中【啟動自動縮進】選項,在【自動縮進開始】選項中輸入“:”,按一下【確定】按鈕,保存設置。
(4)按一下【函數模型】按鈕,打開【函數模型】對話方塊,如圖1-11所示。在【函數模型規則運算式】文字方塊中輸入[\t]*def[\t].+:。按一下【確定】按鈕,保存設置。
至此EditPlus的Python開發環境就設置完成了。EditPlus還可以建立Python檔的範本,以後每次新建Python檔時都可以在範本的基礎上編寫代碼。編寫Python代碼經常要使用中文,同時也要考慮跨平臺的功能,因此可以建立名為template.py的範本檔。template.py的內容如下所示。
#!/usr/bin/python
【代碼說明】第1行代碼使Python程式可以在UNIX平臺運行。
注意 在EditPlus中通過快速鍵Ctrl+F11可以查看當前Python檔中的函數清單。
運行Python程式前,需要先保存Python程式。下面使用EditPlus編寫一段Python程式,並輸出結果,如圖1-12所示。
1.6 不同平臺下的Python
Java和.NET是目前工業界非常成熟的兩大開發平臺。Python可以在這兩大開發平臺上使用,也可以用Java、C#擴展Python。
1.Jython
Jython是完全採用Java編寫的Python解析器。雖然Jython解譯器的實現和性能與Python的解譯器還有些差距,但是Jython使得Python完全可以應用在Java開發平臺下。Jython使得Python程式可以在Java虛擬機器上運行,同時Python可以訪問Java下的類庫和包。Jython也為Java提供了完善的腳本環境,Python在Java應用中可以作為中間層服務的實現語言。Jython使得Java可以擴展Python模組,反過來也可以使用Python編寫Java應用。
2.IronPython
IronPython是Python在.NET平臺上的實現。IronPython提供了互動式的控制台,該控制台支援動態編譯。它使得Python程式師可以訪問所有的.NET庫,而且完全相容Python語言。IronPython必須提供.NET 2.0版本的支援。IronPython的出現使得既可以在.NET平臺下編寫Python代碼,又可以調用豐富的.NET類庫框架。
1.7 小結
本章講解了Python的歷史、特性、開發環境等方面的知識。本章重點講解了Python開發環境的設置、PyCharm、Eclipse等IDE工具的特點、EditPlus編輯器的設置。下一章將會學習Python的基本語法,包括Python的檔案類型、編碼規則、資料類型、運算式等方面的內容。
1.8 習題
1.Python擁有以下特性:__________,__________,__________,__________,__________,__________,__________,__________,__________。
2.Python______(需要/不需要)編譯。
3.以下不屬於Python內置資料結構的是( )。
A.陣列
B.元組
C.列表
D.字典
4.根據自己的系統與偏好,搭建好Python開發環境,編寫“hello world”程式,並運行。













0 留言:
發佈留言