《零基礎學Python》由淺入深,循序漸進,從零開始學Python語言,一點都不難
⊙ 編程基礎、編程進階"編程應用"項目實戰"上機練習
⊙ 300個實例、64個練習題
超值、大容量DVD
⊙ 本書教學視頻
⊙ 本書源代碼
⊙ 本書教學PPT
本書技術支持
⊙ 論壇:www.rzchina.net
前言
及時篇 Python語言基礎
第1章 進入Python的世界
1.1 Python的由來
1.2 Python的特色
1.3 及時個Python程序
1.4 搭建開發環境
1.4.1 Python的下載和安裝
1.4.2 交互式命令行的使用
1.5 Python的開發工具
1.5.1 PyCharm的使用
1.5.2 Eclipse IDE的介紹
1.5.3 EditPlus編輯器環境的配置
1.6 不同平臺下的Python
1.7 小結
1.8 習題
第2章 Python必須知道的基礎語法
2.1 Python的文件類型
2.1.1 源代碼
2.1.2 字節代碼
2.1.3 優化代碼
2.2 Python的編碼規范
2.2.1 命名規則
2.2.2 代碼縮進與冒號
2.2.3 模塊導入的規范
2.2.4 使用空行分隔代碼
2.2.5 正確的注釋
2.2.6 語句的分隔
2.3 變量和常量
2.3.1 變量的命名
2.3.2 變量的賦值
2.3.3 局部變量
2.3.4 全局變量
2.3.5 常量
2.4 數據類型
2.4.1 數字
2.4.2 字符串
2.5 運算符與表達式
2.5.1 算術運算符和算術表達式
2.5.2 關系運算符和關系表達式
2.5.3 邏輯運算符和邏輯表達式
2.6 小結
2.7 習題
第3章 Python的控制語句
3.1 結構化程序設計
3.2 條件判斷語句
3.2.1 if條件語句
3.2.2 if…elif…else判斷語句
3.2.3 if語句也可以嵌套
3.2.4 switch語句的替代方案
3.3 循環語句
3.3.1 while循環
3.3.2 for循環
3.3.3 break和continue語句
3.4 結構化程序示例
3.5 小結
3.6 習題
第4章 Python數據結構
4.1 元組結構
4.1.1 元組的創建
4.1.2 元組的訪問
4.1.3 元組的遍歷
4.2 列表結構
4.2.1 列表的創建
4.2.2 列表的使用
4.2.3 列表的查找、排序、反轉
4.2.4 列表實現堆棧和隊列
4.3 字典結構
4.3.1 字典的創建
4.3.2 字典的訪問
4.3.3 字典的方法
4.3.4 字典的排序、復制
4.3.5 全局字典——sys.modules模塊
4.4 序列
4.5 小結
4.6 習題
第5章 模塊與函數
5.1 Python程序的結構
5.2 模塊
5.2.1 模塊的創建
5.2.2 模塊的導入
5.2.3 模塊的屬性
5.2.4 模塊的內置函數
5.2.5 自定義包
5.3 函數
5.3.1 函數的定義
5.3.2 函數的參數
5.3.3 函數的返回值
5.3.4 函數的嵌套
5.3.5 遞歸函數
5.3.6 lambda函數
5.3.7 Generator函數
5.4 小結
5.5 習題
第6章 字符串與正則表達式
6.1 常見的字符串操作
6.1.1 字符串的格式化
6.1.2 字符串的轉義符
6.1.3 字符串的合并
6.1.4 字符串的截取
6.1.5 字符串的比較
6.1.6 字符串的反轉
6.1.7 字符串的查找和替換
6.1.8 字符串與日期的轉換
6.2 正則表達式應用
6.2.1 正則表達式簡介
6.2.2 使用re模塊處理正則表達式
6.3 小結
6.4 習題
第7章 使用Python處理文件
7.1 文件的常見操作
7.1.1 文件的創建
7.1.2 文件的讀取
7.1.3 文件的寫入
7.1.4 文件的刪除
7.1.5 文件的復制
7.1.6 文件的重命名
7.1.7 文件內容的搜索和替換
7.1.8 文件的比較
7.1.9 配置文件的訪問
7.2 目錄的常見操作
7.2.1 創建和刪除目錄
7.2.2 目錄的遍歷
7.3 文件和流
7.3.1 Python的流對象
7.3.2 模擬Java的輸入、輸出流
7.4 文件處理示例——文件屬性瀏覽程序
7.5 小結
7.6 習題
第8章 面向對象編程
8.1 面向對象的概述
8.2 類和對象
8.2.1 類和對象的區別
8.2.2 類的定義
8.2.3 對象的創建
8.3 屬性和方法
8.3.1 類的屬性
8.3.2 類的方法
8.3.3 內部類的使用
8.3.4 __init__方法
8.3.5 __del__方法
8.3.6 垃圾回收機制
8.3.7 類的內置方法
8.3.8 方法的動態特性
8.4 繼承
8.4.1 使用繼承
8.4.2 抽象基類
8.4.3 多態性
8.4.4 多重繼承
8.4.5 Mixin機制
8.5 運算符的重載
8.6 Python與設計模式
8.6.1 設計模式簡介
8.6.2 設計模式示例——Python實現工廠方法
8.7 小結
8.8 習題
第9章 異常處理與程序調試
9.1 異常的處理
9.1.1 Python中的異常
9.1.2 try…except的使用
9.1.3 try…finally的使用
9.1.4 使用raise拋出異常
9.1.5 自定義異常
9.1.6 assert語句的使用
9.1.7 異常信息
9.2 使用自帶IDLE調試程序
9.3 使用Easy Eclipse for Python調試程序
9.3.1 新建工程
9.3.2 配置調試
9.3.3 設置斷點
9.4 小結
9.5 習題
第10章 Python 數據庫編程
10.1 Python環境下的數據庫編程
10.1.1 通過ODBC訪問數據庫
10.1.2 使用DAO對象訪問數據庫
10.1.3 使用ActiveX Data Object訪問數據庫
10.1.4 Python連接數據庫的專用模塊
10.2 使用Python的持久化模塊讀寫數據
10.3 嵌入式數據庫SQLite
10.3.1 SQLite的命令行工具
10.3.2 使用sqlite3模塊訪問SQLite數據庫
10.4 小結
10.5 習題
第二篇 Python的GUI程序設計
第11章 Python的GUI開發
11.1 Python的GUI開發選擇
11.1.1 認識Python內置的GUI庫Tkinter
11.1.2 使用Tkinter進行開發
11.1.3 認識PyQT GUI庫
11.1.4 使用PyQT GUI庫進行開發
11.2 小結
11.3 習題
第12章 GUI編程與Tkinter相關組件介紹
12.1 GUI程序開發簡介
12.2 Tkinter與主要組件
12.2.1 在程序中使用Tkinter
12.2.2 頂層窗口
12.2.3 標簽
12.2.4 框架
12.2.5 按鈕
12.2.6 輸入框
12.2.7 單選按鈕
12.2.8 復選按鈕
12.2.9 消息
12.2.10 滾動條
12.2.11 列表框
12.3 Tkinter所有組件簡介
12.4 小結
12.5 習題
第三篇 Python的Web開發
第13章 Python的HTML應用
13.1 HTML介紹
13.1.1 HTML的歷史
13.1.2 SGML、HTML、XHTML、HTML5的關系
13.1.3 HTML的標簽
13.1.4 HTML的框架組成
13.2 URL的處理
13.2.1 統一資源定位符URL
13.2.2 URL的解析
13.2.3 URL的拼合
13.2.4 URL的分解
13.2.5 URL的編解碼
13.2.6 中文的編解碼
13.2.7 查詢參數的編碼
13.3 CGI的使用
13.3.1 CGI介紹
13.3.2 獲取CGI環境信息
13.3.3 解析用戶的輸入
13.4 獲取HTML資源
13.4.1 使用urlopen和urlretrieve獲取HTTP資源
13.4.2 分析返回資源的相關信息
13.4.3 自定義獲取資源方式
13.4.4 使用http.client模塊獲取資源
13.5 HTML文檔的解析
13.6 小結
13.7 習題
第14章 Python和XML
14.1 XML介紹
14.1.1 XML的演進歷史
14.1.2 XML的優點和限制
14.1.3 XML技術的Python支持
14.2 XML文檔概覽和驗證
14.2.1 XML文檔的基礎概念
14.2.2 XML文檔的結構良好性驗證
14.2.3 XML文檔的有效性驗證
14.3 分析XML文檔結構
14.3.1 XML的元素和標簽
14.3.2 元素的屬性
14.3.3 XML的名字
14.3.4 字符實體
14.3.5 CDATA段
14.3.6 注釋
14.3.7 處理指令
14.3.8 XML定義
14.4 使用SAX處理XML文檔
14.4.1 SAX介紹
14.4.2 SAX處理的組成部分
14.5 使用DOM處理XML文檔
14.5.1 DOM介紹
14.5.2 xml.dom模塊中的接口操作
14.5.3 對XML文檔的操作
14.6 小結
14.7 習題
第15章 Python的Web開發——Django框架的應用
15.1 常見的Web開發框架
15.1.1 Zope
15.1.2 TurboGears
15.1.3 Django
15.1.4 其他Web開發框架
15.1.5 根據自身所需選擇合適的開發框架
15.2 MVC模式
15.2.1 MVC模式介紹
15.2.2 MVC模式的優缺點
15.2.3 Django框架中的MVC
15.3 Django開發環境的搭建
15.3.1 Django框架的安裝
15.3.2 數據庫的配置
15.4 Django框架的應用
15.4.1 Web應用的創建
15.4.2 Django中的開發服務器
15.4.3 創建數據庫
15.4.4 生成Django應用
15.4.5 創建數據模型
15.4.6 URL設計
15.4.7 創建視圖
15.4.8 模板系統
15.4.9 Django項目
15.5 Django框架的高級應用
15.5.1 管理界面
15.5.2 生成數據庫數據
15.5.3 Session功能
15.5.4 國際化
15.6 小結
15.7 習題
第四篇 Python其他應用
第16章 敏捷方法學在Python中的應用——測試驅動開發
16.1 測試驅動開發
16.1.1 測試驅動開發模式
16.1.2 TDD的優勢
16.1.3 TDD的使用步驟
16.2 unittest測試框架
16.2.1 unittest模塊介紹
16.2.2 構建測試用例
16.2.3 構建測試固件
16.2.4 組織多個測試用例
16.2.5 構建測試套件
16.2.6 重構代碼
16.2.7 執行測試
16.3 使用doctest進行測試
16.3.1 doctest模塊介紹
16.3.2 構建可執行文檔
16.3.3 執行doctest測試
16.4 小結
16.5 習題
第17章 Python中的進程和線程
17.1 進程和線程
17.1.1 進程和線程的概念
17.1.2 Python中對于進程和線程處理的支持
17.2 Python下的進程編程
17.2.1 進程運行環境
17.2.2 創建進程
17.2.3 終止進程
17.3 使用subprocess模塊管理進程
17.3.1 使用Popen類管理進程
17.3.2 調用外部系統命令
17.3.3 替代其他進程創建函數
17.4 進程間的信號機制
17.4.1 信號的處理
17.4.2 信號使用的規則
17.5 多線程概述
17.5.1 什么是多線程
17.5.2 線程的狀態
17.5.3 Python中的線程支持
17.6 生成和終止線程
17.6.1 使用_thread模塊
17.6.2 使用threading.Thread類
17.7 管理線程
17.7.1 線程狀態轉移
17.7.2 主線程對子線程的控制
17.7.3 線程中的局部變量
17.8 線程之間的同步
17.8.1 臨界資源和臨界區
17.8.2 鎖機制
17.8.3 條件變量
17.8.4 信號量
17.8.5 同步隊列
17.8.6 線程同步小結
17.9 小結
17.10 習題
第18章 基于Python的系統管理
18.1 增強的交互式環境IPython
18.1.1 IPython介紹
18.1.2 IPython的安裝
18.1.3 IPython的啟動
18.1.4 IPython的環境配置
18.2 和IPython的簡單交互
18.2.1 IPython中的輸入和輸出
18.2.2 輸出提示符的區別
18.2.3 輸出提示符區別的原因
18.3 IPython中的magic函數
18.3.1 magic函數的使用和構造
18.3.2 目錄管理
18.3.3 對象信息的收集
18.3.4 magic函數小結
18.4 IPython適合于系統管理的特點
18.4.1 Tab補全
18.4.2 歷史記錄功能
18.4.3 執行外部系統命令和運行文件
18.4.4 對象查看和自省
18.4.5 直接編輯代碼
18.4.6
及時篇
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程序。