內容簡介
Python 技術者們練功!老手帶路教你精通正宗 Python 程式
內容簡介
別再用 C/Java 邏輯來寫 Python 程式了!
Python 軟體基金會主席 親自指點、引領入門
教您學 Python, 更讓您懂 Python
用真正 Python 思維寫出流利的 Pythonic 程式碼
Python 是目前的當紅程式語言, 更是進入 AI 機器學習必備的基礎知識, 學習 Python 已經蔚為風潮。但是大部分書籍、文件都只是教語法, 洋洋灑灑一大篇語法說明, 學了之後, 真的能懂 Python?知道怎麼寫 Python 嗎?
本書不只是說明語法, 更告訴您 Python 與其他程式語言的不同之處, 以及這些特點背後的原因, 讓您真的懂 Python、用 Python!
本書特色
翻譯書都看不懂?新手免害怕, 詳細的解說+流暢的翻譯, 讓你也看得懂、學得會, 領你進門更帶你修練成老手
本書為 Python 軟體基金會主席親自撰寫的最新版 Python 經典, 中文版由施威銘研究室監修, 書中針對原書進行大量補充, 並適當添加註解, 幫助讀者能更加理解內容。
其他書看不到的內容, 只存在於老手間的獨門心法, 就讓這本書一一為您詳細說明。例如:
•Python 全域變數不是真正全域?
•Python 函式的區域變數是由賦值與否來決定的?
•為何 Python 函式都不檢查參數值, 先用了出錯再處理?
•Python 物件沒有真正的私有屬性, 資訊都不用封裝隱藏了嗎?
•鴨子型別是什麼?我實在不懂這跟鴨子到底有什麼關係?
•為什麼 Python 函式可以一次 return 多個傳回值?
•Pythonic 這個詞好像很厲害, 是什麼意思?
•Python 的 list[n:m] 切片為何要有頭無尾?
•為什麼 Python 要求程式每行結尾不要超過 80 個字?
•Python 的型別與類別是同義詞?
本書相關資源網頁如下, 請登錄下載範例程式及 Bonus:
http://www.flag.com.tw/bk/t/f9749
也歡迎加入本書社群, 和技術者們直接對話!
「從做中學 Learning by doing」粉絲專頁
(https://www.facebook.com/flaglearningbydoing/)
內容簡介
別再用 C/Java 邏輯來寫 Python 程式了!
Python 軟體基金會主席 親自指點、引領入門
教您學 Python, 更讓您懂 Python
用真正 Python 思維寫出流利的 Pythonic 程式碼
Python 是目前的當紅程式語言, 更是進入 AI 機器學習必備的基礎知識, 學習 Python 已經蔚為風潮。但是大部分書籍、文件都只是教語法, 洋洋灑灑一大篇語法說明, 學了之後, 真的能懂 Python?知道怎麼寫 Python 嗎?
本書不只是說明語法, 更告訴您 Python 與其他程式語言的不同之處, 以及這些特點背後的原因, 讓您真的懂 Python、用 Python!
本書特色
翻譯書都看不懂?新手免害怕, 詳細的解說+流暢的翻譯, 讓你也看得懂、學得會, 領你進門更帶你修練成老手
本書為 Python 軟體基金會主席親自撰寫的最新版 Python 經典, 中文版由施威銘研究室監修, 書中針對原書進行大量補充, 並適當添加註解, 幫助讀者能更加理解內容。
其他書看不到的內容, 只存在於老手間的獨門心法, 就讓這本書一一為您詳細說明。例如:
•Python 全域變數不是真正全域?
•Python 函式的區域變數是由賦值與否來決定的?
•為何 Python 函式都不檢查參數值, 先用了出錯再處理?
•Python 物件沒有真正的私有屬性, 資訊都不用封裝隱藏了嗎?
•鴨子型別是什麼?我實在不懂這跟鴨子到底有什麼關係?
•為什麼 Python 函式可以一次 return 多個傳回值?
•Pythonic 這個詞好像很厲害, 是什麼意思?
•Python 的 list[n:m] 切片為何要有頭無尾?
•為什麼 Python 要求程式每行結尾不要超過 80 個字?
•Python 的型別與類別是同義詞?
本書相關資源網頁如下, 請登錄下載範例程式及 Bonus:
http://www.flag.com.tw/bk/t/f9749
也歡迎加入本書社群, 和技術者們直接對話!
「從做中學 Learning by doing」粉絲專頁
(https://www.facebook.com/flaglearningbydoing/)
作者簡介
作者簡介
Python 軟體基金會主席 Naomi Ceder
Naomi Ceder為 Python 軟體基金會主席, 有超過 30 年的程式設計經驗, 從 2001 年開始使用 Python, 已經廣泛地將 Python 應用於系統管理、網頁程式、資料庫管理、數據分析等各種實務場合, 同時也擔任 Python 教學的講師, 學生從 12 歲初學者到專業人士, 致力於將 Python 的優點推廣給所有人。
Python 軟體基金會主席 Naomi Ceder
Naomi Ceder為 Python 軟體基金會主席, 有超過 30 年的程式設計經驗, 從 2001 年開始使用 Python, 已經廣泛地將 Python 應用於系統管理、網頁程式、資料庫管理、數據分析等各種實務場合, 同時也擔任 Python 教學的講師, 學生從 12 歲初學者到專業人士, 致力於將 Python 的優點推廣給所有人。
內容目錄
目錄
第1篇 初始篇
第1章 關於Python
1.1 Python簡介
1.2 Python的優勢
1.3 Python表現不佳的地方
1.4 為什麼要學習 Python 3?
第2章 開發環境安裝與設定
2.1 安裝Python 開發環境
2.2 設定Python 開發環境
第3章 執行與測試Python程式
第2篇 基礎篇
第4章 絕對的基礎
4.1 縮排及區塊結構
•老手帶路:Python 的縮排原則
4.2 註解
4.3 變數及其設定
•老手帶路:Python中的變數:是水桶還是標籤?
4.4 運算式
4.5 字串
4.6 數字
•老手帶路:Python 的除法特性
•老手帶路:避免使用 from import *
4.7 None值
4.8 取得使用者的輸入
4.9 內建算符
4.10 基本Python風格與名稱命名慣例
第5章 基本資料結構:list、tuple、set
5.1 list類似陣列
5.2 list的索引與切片
•老手帶路:為什麼Python的切片索引要有頭無尾?
5.3 修改list
5.4 list的排序
5.5 其他常用的list操作
5.6 多層list和深層副本
5.7 tuple
•老手帶路:自動打包與自動解包的功用
•老手帶路:您寫的Python程式夠Pythonic嗎?
5.8 set
第6章 字串
6.1 字串為字元序列(sequence)
6.2 基本的字串操作
6.3 特殊字元和轉義字元
•老手帶路:程式敘述過長的缺點與長字串的建立
6.4 字串的method
6.5 從物件轉換成字串
6.6 使用format() method來格式化字串
•老手帶路:使用格式化字串的優點
6.7 以 % 算符來格式化字串
6.8 以 f-strings來格式化字串
6.9 bytes物件
6.10 使用print() 控制字串輸出
第7章 字典
7.1 什麼是字典?
7.2 其他字典操作
7.3 字數統計
7.4 什麼型別可以當作鍵來使用?
7.5 稀疏矩陣
7.6 以字典作為快取
7.7 字典的效率
第8章 流程控制
8.1 while 迴圈
•老手帶路:while-else的使用場合
8.2 if-elif-else 判斷式
•老手帶路:使用簡潔易懂的單行if條件運算式
8.3 for 迴圈
8.4 用生成式快速建立新的list與字典
•老手帶路:用索引刪除list元素的隱形Bug
8.5 敘述、區塊、和縮排
8.6 布林值與運算式的真假運算
•老手帶路:用Short-circuit Evaluation代替if判斷式
8.7 寫一個簡單的程式來分析文字檔
第9章 函式
9.1 基本函式定義
9.2 函式的參數定義與引數傳遞
9.3 用可變 (mutable)物件作為引數時要小心
•老手帶路:用可變物件做為函式參數預設值的問題
9.4 local、global、nonlocal變數
•老手帶路:小心區域變數未賦值先使用
9.5 將變數參照到函式
•老手帶路:將函式當成引數來傳遞與其適用場合
9.6 lambda 匿名函式
•老手帶路:使用 lambda匿名程式的優缺點
9.7 產生器(走訪器)函式
9.8 修飾器(Decorator)
•老手帶路:修飾器(decorator)的用途
第10章 模組與變數可視範圍
10.1 什麼是模組?
10.2 第一個模組
10.3 import 敘述的三種形式
10.4 模組搜尋路徑
10.5 模組中的私有名稱
10.6 函式庫與第三方模組
10.7 Python命名空間和變數可視範圍
•老手帶路:Python全域變數的可視範圍不涵蓋全程式
•老手帶路:從模組import變數容易發生的問題
•老手帶路:在主程式與不同模組之間共享變數資料
第11章 Python程式檔
11.1 將主程式放入主控函式
11.2 在Linux/UNIX讓Python程式檔變成執行檔
11.3 macOS上的Python程式檔
11.4 Windows中Python程式檔的啟動方式
11.5 程式與模組
11.6 發佈Python應用程式
第12章 使用檔案系統
12.1 os 和 os.path 與 pathlib之比較
12.2 路徑和路徑名稱
12.3 取得檔案相關的資訊
12.4 更多檔案系統操作
12.5 用os.walk()處理所有子目錄中的所有檔案
第13章 檔案讀寫
13.1 開啟檔案與file物件
13.2 關閉檔案
13.3 以寫入模式或其他模式開啟檔案
13.4 讀寫文字檔和二進位檔案
13.5 用pathlib讀取與寫入
13.6 標準輸入/輸出與重新導向
13.7 用struct模組讀取結構化二進位資料
13.8 將物件序列化後保存到檔案
13.9 Shelve 物件
第14章 例外處理
14.1 什麼是例外
•老手帶路:LBYL(事先檢查避免出錯)與EAFP(先做了出錯再處理)
14.2 Python的例外機制
•老手帶路:EAFP錯誤處理風格的優缺點
•老手帶路:用例外處理與Guard Clauses讓程式流程更清楚
14.3 使用with資源管理器
第3篇 進階篇
第15章 類別與物件導向程式設計
15.1 類別Class
15.2 物件變數與__init__特殊method
15.3 物件方法method (物件的函式)
15.4 類別變數class variables
15.5 靜態方法static method與
15.6 類別的繼承inheritance
15.7 類別變數與物件變數的繼承
15.8 Python類別基礎的重點複習
15.9 私有變數與私有方法
•老手帶路:有別於資訊隱藏傳統! Python對於物件內部資料的公開風格
15.10 以 @property 修飾器來實作更靈活的物件變數
15.11 物件的變數視野與命名空間
15.12 物件的記憶體回收機制
15.13 多重繼承
第16章 常規表達式
16.1 什麼是常規表達式
16.2 具有特殊字元的常規表達式
16.3 常規表達式與原始字串
16.4 從字串中提取符合樣式的文字
16.5 用常規表達式搜尋取代字串
第17章 物件的型別與特殊method
17.1 取得物件的型別
17.2 比較與檢查型別
17.3 取得物件所屬類別與類別繼承結構
17.4 鴨子型別(Duck Typing)
•老手帶路:鴨子型別在實際應用上的彈性
17.5 何謂物件的特殊method
17.6 用__getitem__自訂可走訪與
17.7 用__setitem__自訂可用索引賦值的
17.8 賦予自訂物件更多類似list的功能
17.9 繼承內建型別來產生新的型別
17.10 使用特殊method的時機
第18章 套件
18.1 什麼是套件
18.2 套件的運作方式
18.3 套件的具體範例
18.4 __all__ 屬性
18.5 套件的正確使用方式
第19章 使用Python 函式庫
19.1 「內建電池」:標準函式庫
19.2 用安裝檔新增Python函式庫
19.3
第1篇 初始篇
第1章 關於Python
1.1 Python簡介
1.2 Python的優勢
1.3 Python表現不佳的地方
1.4 為什麼要學習 Python 3?
第2章 開發環境安裝與設定
2.1 安裝Python 開發環境
2.2 設定Python 開發環境
第3章 執行與測試Python程式
第2篇 基礎篇
第4章 絕對的基礎
4.1 縮排及區塊結構
•老手帶路:Python 的縮排原則
4.2 註解
4.3 變數及其設定
•老手帶路:Python中的變數:是水桶還是標籤?
4.4 運算式
4.5 字串
4.6 數字
•老手帶路:Python 的除法特性
•老手帶路:避免使用 from import *
4.7 None值
4.8 取得使用者的輸入
4.9 內建算符
4.10 基本Python風格與名稱命名慣例
第5章 基本資料結構:list、tuple、set
5.1 list類似陣列
5.2 list的索引與切片
•老手帶路:為什麼Python的切片索引要有頭無尾?
5.3 修改list
5.4 list的排序
5.5 其他常用的list操作
5.6 多層list和深層副本
5.7 tuple
•老手帶路:自動打包與自動解包的功用
•老手帶路:您寫的Python程式夠Pythonic嗎?
5.8 set
第6章 字串
6.1 字串為字元序列(sequence)
6.2 基本的字串操作
6.3 特殊字元和轉義字元
•老手帶路:程式敘述過長的缺點與長字串的建立
6.4 字串的method
6.5 從物件轉換成字串
6.6 使用format() method來格式化字串
•老手帶路:使用格式化字串的優點
6.7 以 % 算符來格式化字串
6.8 以 f-strings來格式化字串
6.9 bytes物件
6.10 使用print() 控制字串輸出
第7章 字典
7.1 什麼是字典?
7.2 其他字典操作
7.3 字數統計
7.4 什麼型別可以當作鍵來使用?
7.5 稀疏矩陣
7.6 以字典作為快取
7.7 字典的效率
第8章 流程控制
8.1 while 迴圈
•老手帶路:while-else的使用場合
8.2 if-elif-else 判斷式
•老手帶路:使用簡潔易懂的單行if條件運算式
8.3 for 迴圈
8.4 用生成式快速建立新的list與字典
•老手帶路:用索引刪除list元素的隱形Bug
8.5 敘述、區塊、和縮排
8.6 布林值與運算式的真假運算
•老手帶路:用Short-circuit Evaluation代替if判斷式
8.7 寫一個簡單的程式來分析文字檔
第9章 函式
9.1 基本函式定義
9.2 函式的參數定義與引數傳遞
9.3 用可變 (mutable)物件作為引數時要小心
•老手帶路:用可變物件做為函式參數預設值的問題
9.4 local、global、nonlocal變數
•老手帶路:小心區域變數未賦值先使用
9.5 將變數參照到函式
•老手帶路:將函式當成引數來傳遞與其適用場合
9.6 lambda 匿名函式
•老手帶路:使用 lambda匿名程式的優缺點
9.7 產生器(走訪器)函式
9.8 修飾器(Decorator)
•老手帶路:修飾器(decorator)的用途
第10章 模組與變數可視範圍
10.1 什麼是模組?
10.2 第一個模組
10.3 import 敘述的三種形式
10.4 模組搜尋路徑
10.5 模組中的私有名稱
10.6 函式庫與第三方模組
10.7 Python命名空間和變數可視範圍
•老手帶路:Python全域變數的可視範圍不涵蓋全程式
•老手帶路:從模組import變數容易發生的問題
•老手帶路:在主程式與不同模組之間共享變數資料
第11章 Python程式檔
11.1 將主程式放入主控函式
11.2 在Linux/UNIX讓Python程式檔變成執行檔
11.3 macOS上的Python程式檔
11.4 Windows中Python程式檔的啟動方式
11.5 程式與模組
11.6 發佈Python應用程式
第12章 使用檔案系統
12.1 os 和 os.path 與 pathlib之比較
12.2 路徑和路徑名稱
12.3 取得檔案相關的資訊
12.4 更多檔案系統操作
12.5 用os.walk()處理所有子目錄中的所有檔案
第13章 檔案讀寫
13.1 開啟檔案與file物件
13.2 關閉檔案
13.3 以寫入模式或其他模式開啟檔案
13.4 讀寫文字檔和二進位檔案
13.5 用pathlib讀取與寫入
13.6 標準輸入/輸出與重新導向
13.7 用struct模組讀取結構化二進位資料
13.8 將物件序列化後保存到檔案
13.9 Shelve 物件
第14章 例外處理
14.1 什麼是例外
•老手帶路:LBYL(事先檢查避免出錯)與EAFP(先做了出錯再處理)
14.2 Python的例外機制
•老手帶路:EAFP錯誤處理風格的優缺點
•老手帶路:用例外處理與Guard Clauses讓程式流程更清楚
14.3 使用with資源管理器
第3篇 進階篇
第15章 類別與物件導向程式設計
15.1 類別Class
15.2 物件變數與__init__特殊method
15.3 物件方法method (物件的函式)
15.4 類別變數class variables
15.5 靜態方法static method與
15.6 類別的繼承inheritance
15.7 類別變數與物件變數的繼承
15.8 Python類別基礎的重點複習
15.9 私有變數與私有方法
•老手帶路:有別於資訊隱藏傳統! Python對於物件內部資料的公開風格
15.10 以 @property 修飾器來實作更靈活的物件變數
15.11 物件的變數視野與命名空間
15.12 物件的記憶體回收機制
15.13 多重繼承
第16章 常規表達式
16.1 什麼是常規表達式
16.2 具有特殊字元的常規表達式
16.3 常規表達式與原始字串
16.4 從字串中提取符合樣式的文字
16.5 用常規表達式搜尋取代字串
第17章 物件的型別與特殊method
17.1 取得物件的型別
17.2 比較與檢查型別
17.3 取得物件所屬類別與類別繼承結構
17.4 鴨子型別(Duck Typing)
•老手帶路:鴨子型別在實際應用上的彈性
17.5 何謂物件的特殊method
17.6 用__getitem__自訂可走訪與
17.7 用__setitem__自訂可用索引賦值的
17.8 賦予自訂物件更多類似list的功能
17.9 繼承內建型別來產生新的型別
17.10 使用特殊method的時機
第18章 套件
18.1 什麼是套件
18.2 套件的運作方式
18.3 套件的具體範例
18.4 __all__ 屬性
18.5 套件的正確使用方式
第19章 使用Python 函式庫
19.1 「內建電池」:標準函式庫
19.2 用安裝檔新增Python函式庫
19.3