- Python起步走
1.1 認識Python
1.1.1 Python 3的誕生
1.1.2 從Python 3.0到3.7
官方的推動
社群的接納
1.1.3 初識社群資源
Python之父
Python軟體基金會
Python改進提案
Python研討會
Python使用者群組
1.2 建立Python環境
1.2.1 Python的實作
CPython
PyPy
Jython
IronPython
1.2.2 下載與安裝Python 3.7
1.2.3 認識安裝內容
python指令
Doc資料夾
Lib資料夾
Scripts資料夾
Tools資料夾
1.3 重點複習
1.1.1 Python 3的誕生
1.1.2 從Python 3.0到3.7
官方的推動
社群的接納
1.1.3 初識社群資源
Python之父
Python軟體基金會
Python改進提案
Python研討會
Python使用者群組
1.2 建立Python環境
1.2.1 Python的實作
CPython
PyPy
Jython
IronPython
1.2.2 下載與安裝Python 3.7
1.2.3 認識安裝內容
python指令
Doc資料夾
Lib資料夾
Scripts資料夾
Tools資料夾
1.3 重點複習
- 從REPL到IDE
2.1 從 'Hello World' 開始
2.1.1 使用REPL
2.1.2 撰寫Python原始碼
2.1.3 哈囉!世界!
UTF-8
設定原始碼編碼
2.2 初識模組與套件
2.2.1 簡介模組
2.2.2 設定PYTHONPATH
2.2.3 使用套件管理模組
2.2.4 使用import as與from import
import as重新命名模組
from import直接匯入名稱
2.3 使用IDE
2.3.1 下載、安裝PyCharm
2.3.2 IDE專案管理基礎
2.4 重點複習
2.1.1 使用REPL
2.1.2 撰寫Python原始碼
2.1.3 哈囉!世界!
UTF-8
設定原始碼編碼
2.2 初識模組與套件
2.2.1 簡介模組
2.2.2 設定PYTHONPATH
2.2.3 使用套件管理模組
2.2.4 使用import as與from import
import as重新命名模組
from import直接匯入名稱
2.3 使用IDE
2.3.1 下載、安裝PyCharm
2.3.2 IDE專案管理基礎
2.4 重點複習
- 型態與運算子
3.1 內建型態
3.1.1 數值型態
整數型態
浮點數型態
布林型態
複數
3.1.2 字串型態
基本字串表示
3.1.1 數值型態
整數型態
浮點數型態
布林型態
複數
3.1.2 字串型態
基本字串表示
print函式
舊式字串格式化
新式字串格式化
字串格式化實字
str與bytes
3.1.3 群集型態
清單(list)
集合(set)
字典(dict)
Tuple(tuple)
3.2 變數與運算子
3.2.1 變數
3.2.2 加減乘除運算
應用於數值型態
應用於字串型態
應用於list與tuple
3.2.3 比較與指定運算
3.2.4 邏輯運算
3.2.5 位元運算
3.2.6 索引切片運算
3.3 重點複習
3.1.3 群集型態
清單(list)
集合(set)
字典(dict)
Tuple(tuple)
3.2 變數與運算子
3.2.1 變數
3.2.2 加減乘除運算
應用於數值型態
應用於字串型態
應用於list與tuple
3.2.3 比較與指定運算
3.2.4 邏輯運算
3.2.5 位元運算
3.2.6 索引切片運算
3.3 重點複習
- 流程語法與函式
4.1 流程語法
4.1.1 if分支判斷
4.1.2 while迴圈
4.1.3 for in迭代
4.1.4 pass、break、continue
4.1.5 for Comprehension
4.2 定義函式
4.2.1 使用def定義函式
4.2.2 參數與引數
參數預設值
關鍵字引數
*與**
4.2.3 一級函式的運用
filter_lt()函式
map_lt()函式
filter()、map()、sorted()函式
4.2.4 lambda運算式
4.2.5 初探變數範圍
4.2.6 yield產生器
4.1.1 if分支判斷
4.1.2 while迴圈
4.1.3 for in迭代
4.1.4 pass、break、continue
4.1.5 for Comprehension
4.2 定義函式
4.2.1 使用def定義函式
4.2.2 參數與引數
參數預設值
關鍵字引數
*與**
4.2.3 一級函式的運用
filter_lt()函式
map_lt()函式
filter()、map()、sorted()函式
4.2.4 lambda運算式
4.2.5 初探變數範圍
4.2.6 yield產生器
4.3 初探型態提示
4.3.1 為何需要型態提示?
4.3.2 型態提示語法
4.3.3 使用mypy檢查型態
4.3.4 型態提示的時機
4.4 重點複習
- 從模組到類別
5.1 模組管理
5.1.1 用模組建立抽象層
5.1.2 管理模組名稱
from import名稱管理
限制from import *
del模組名稱
sys.modules
模組名稱範圍
5.1.3 設定PTH檔案
5.2 初識物件導向
5.2.1 定義型態
5.2.2 定義方法
定義__init__()方法
定義操作方法
定義__str__()方法
5.2.3 定義內部屬性
5.2.4 定義外部屬性
5.3 類別語法細節
5.3.1 綁定與未綁定方法
5.3.2 靜態方法與類別方法
標註@staticmethod
標註@classmethod
5.2.3 屬性名稱空間
5.3.4 定義運算子
5.3.5 __new__()、__init__()與__del__()
5.4 重點複習
5.1.1 用模組建立抽象層
5.1.2 管理模組名稱
from import名稱管理
限制from import *
del模組名稱
sys.modules
模組名稱範圍
5.1.3 設定PTH檔案
5.2 初識物件導向
5.2.1 定義型態
5.2.2 定義方法
定義__init__()方法
定義操作方法
定義__str__()方法
5.2.3 定義內部屬性
5.2.4 定義外部屬性
5.3 類別語法細節
5.3.1 綁定與未綁定方法
5.3.2 靜態方法與類別方法
標註@staticmethod
標註@classmethod
5.2.3 屬性名稱空間
5.3.4 定義運算子
5.3.5 __new__()、__init__()與__del__()
5.4 重點複習
- 類別的繼承
6.1 何謂繼承?
6.1.1 繼承共同行為
6.1.2 鴨子定型
6.1.3 重新定義方法
6.1.4 定義抽象方法
6.2 繼承語法細節
6.2.1 初識object與super()
6.2.2 Rich comparison方法
定義__eq__()
定義__gt__()、__ge__()
使用functools.total_ordering
6.2.3 使用enum列舉
6.2.4 多重繼承
6.2.5 建立ABC
6.2.6 探討super()
6.3 文件與套件資源
6.3.1 DocString
6.3.2 查詢官方文件
6.3.3 PyPI與pip
6.1.1 繼承共同行為
6.1.2 鴨子定型
6.1.3 重新定義方法
6.1.4 定義抽象方法
6.2 繼承語法細節
6.2.1 初識object與super()
6.2.2 Rich comparison方法
定義__eq__()
定義__gt__()、__ge__()
使用functools.total_ordering
6.2.3 使用enum列舉
6.2.4 多重繼承
6.2.5 建立ABC
6.2.6 探討super()
6.3 文件與套件資源
6.3.1 DocString
6.3.2 查詢官方文件
6.3.3 PyPI與pip
6.4 泛型入門
6.4.1定義泛型函式
6.4.2定義泛型類別
6.5 重點複習
- 例外處理
7.1 語法與繼承架構
7.1.1 使用try、except
7.1.2 例外繼承架構
7.1.3 引發(raise)例外
7.1.4 Python例外風格
7.1.5 認識堆疊追蹤
使用traceback.print_exc()
使用sys.exc_info()
使用sys.excepthook()
7.1.6 提出警告訊息
7.2 例外與資源管理
7.2.1 使用else、finally
try、except、else
try、finally
7.2.2 使用with as
7.2.3 實作情境管理器
實作__enter__()、__exit__()
使用@contextmanager
7.3 重點複習
7.1.1 使用try、except
7.1.2 例外繼承架構
7.1.3 引發(raise)例外
7.1.4 Python例外風格
7.1.5 認識堆疊追蹤
使用traceback.print_exc()
使用sys.exc_info()
使用sys.excepthook()
7.1.6 提出警告訊息
7.2 例外與資源管理
7.2.1 使用else、finally
try、except、else
try、finally
7.2.2 使用with as
7.2.3 實作情境管理器
實作__enter__()、__exit__()
使用@contextmanager
7.3 重點複習
- open()與io模組
8.1 使用open()函式
8.1.1 file與mode參數
read()、write()、close()
readline()、readlines()、writelines()
tell()、seek()、flush()
readinto()
8.1.2 buffering、encoding、errors、newlines參數
buffering
encoding與errors
newlines
8.1.3 stdin、stdout、stderr
8.2 進階檔案處理
8.2.1 認識檔案描述器
8.2.2 認識io模組
檔案物件繼承架構
自行建立檔案物件
BytesIO與StringIO
8.3 重點複習
8.1.1 file與mode參數
read()、write()、close()
readline()、readlines()、writelines()
tell()、seek()、flush()
readinto()
8.1.2 buffering、encoding、errors、newlines參數
buffering
encoding與errors
newlines
8.1.3 stdin、stdout、stderr
8.2 進階檔案處理
8.2.1 認識檔案描述器
8.2.2 認識io模組
檔案物件繼承架構
自行建立檔案物件
BytesIO與StringIO
8.3 重點複習
- 資料結構
9.1 hashable、iterable與orderable
9.1.1 hashable協定
9.1.2 iterable協定
實作__iter__()
使用itertools模組
9.1.3 orderable協定
9.2 進階群集處理
9.2.1 認識群集架構
循序類型
集合類型
映射類型
9.2.2 使用collection模組
deque類別
namedtuple()函式
OrderedDict類別
defaultdict類別
Counter類別
ChainMap類別
9.2.3 __getitem__()、__setitem__()、__delitem__()
9.2.4 使用collection.abc模組
9.2.5 UserList、UserDict、UserString類別
9.3 重點複習
9.1.1 hashable協定
9.1.2 iterable協定
實作__iter__()
使用itertools模組
9.1.3 orderable協定
9.2 進階群集處理
9.2.1 認識群集架構
循序類型
集合類型
映射類型
9.2.2 使用collection模組
deque類別
namedtuple()函式
OrderedDict類別
defaultdict類別
Counter類別
ChainMap類別
9.2.3 __getitem__()、__setitem__()、__delitem__()
9.2.4 使用collection.abc模組
9.2.5 UserList、UserDict、UserString類別
9.3 重點複習
- 資料永續與交換
10.1 物件序列化
10.1.1 使用pickle模組
10.1.2 使用shelve模組
10.2 資料庫處理
10.2.1 認識DB-API 2.0
10.2.2 使用sqlite3模組
建立資料庫與連線
建立表格與新增資料
查詢資料
更新與刪除資料
10.2.3 參數化SQL語句
10.2.4 簡介交易
更新遺失(Lost update)
髒讀(Dirty read)
無法重複的讀取(Unrepeatable read)
幻讀(Phantom read)
10.3 資料交換格式
10.3.1 CSV
使用reader()、writer()
使用DictReader()、DictWriter()
10.3.2 JSON
使用json.dumps()、json.dump()
使用json.loads()、json.load()
10.3.3 XML
剖析XML
修改XML
漸進地剖析XML
10.4 重點複習
10.1.1 使用pickle模組
10.1.2 使用shelve模組
10.2 資料庫處理
10.2.1 認識DB-API 2.0
10.2.2 使用sqlite3模組
建立資料庫與連線
建立表格與新增資料
查詢資料
更新與刪除資料
10.2.3 參數化SQL語句
10.2.4 簡介交易
更新遺失(Lost update)
髒讀(Dirty read)
無法重複的讀取(Unrepeatable read)
幻讀(Phantom read)
10.3 資料交換格式
10.3.1 CSV
使用reader()、writer()
使用DictReader()、DictWriter()
10.3.2 JSON
使用json.dumps()、json.dump()
使用json.loads()、json.load()
10.3.3 XML
剖析XML
修改XML
漸進地剖析XML
10.4 重點複習
- 常用內建模組
11.1 日期與時間
11.1.1 時間的度量
格林威治標準時間
世界時
國際原子時
世界協調時間
Unix時間
epoch
11.1.2 年曆與時區簡介
儒略曆
格里高利曆
ISO8601標準
時區
11.1.3 使用time模組
time()、gmtime()與localtime()
剖析時間字串
時間字串格式
11.1.4 使用datetime模組
datetime()、date()與time()
時間字串描述與剖析
日期與時間運算
考量時區
11.2 日誌
11.2.1 簡介Logger
11.2.2 使用Handler、Formatter與Filter
11.2.3 使用logging.config
11.3 規則表示式
11.3.1 簡介規則表示式
字元表示
字元類
貪婪、逐步量詞
邊界比對
分組與參考
11.1.1 時間的度量
格林威治標準時間
世界時
國際原子時
世界協調時間
Unix時間
epoch
11.1.2 年曆與時區簡介
儒略曆
格里高利曆
ISO8601標準
時區
11.1.3 使用time模組
time()、gmtime()與localtime()
剖析時間字串
時間字串格式
11.1.4 使用datetime模組
datetime()、date()與time()
時間字串描述與剖析
日期與時間運算
考量時區
11.2 日誌
11.2.1 簡介Logger
11.2.2 使用Handler、Formatter與Filter
11.2.3 使用logging.config
11.3 規則表示式
11.3.1 簡介規則表示式
字元表示
字元類
貪婪、逐步量詞
邊界比對
分組與參考
擴充標記
11.3.2 Pattern與Match物件
建立Pattern物件
使用Match物件
分組處理
字串取代
11.4 檔案與目錄
11.4.1 使用os模組
取得目錄資訊
走訪目錄
建立、修改、移除目錄
11.4.2 使用os.path模組
路徑計算
路徑判定
路徑資訊
11.4.3 使用glob模組
建立Pattern物件
使用Match物件
分組處理
字串取代
11.4 檔案與目錄
11.4.1 使用os模組
取得目錄資訊
走訪目錄
建立、修改、移除目錄
11.4.2 使用os.path模組
路徑計算
路徑判定
路徑資訊
11.4.3 使用glob模組
11.5 URL處理
11.5.1 淺談URL與HTTP
URL規範
GET請求
POST請求
保留字元
中文字元
11.5.2 使用urllib.request
11.5.3 使用urllib.parse
11.6 重點複習
- 除錯、測試與效能
12.1 除錯
12.1.1 認識Debugger
中斷點
檢視變數
逐步執行
12.1.2 使用pdb模組
Debugger指令
pdb.run()
pdb.set_trace()
12.2 測試
12.2.1 使用assert斷言
12.2.2 撰寫doctest
12.2.3 使用unittest單元測試
測試案例
測試設備
測試套件
測試執行器
12.3 效能
12.3.1 timeit模組
12.3.2 使用cProfile(profile)
12.4 重點複習
12.1.1 認識Debugger
中斷點
檢視變數
逐步執行
12.1.2 使用pdb模組
Debugger指令
pdb.run()
pdb.set_trace()
12.2 測試
12.2.1 使用assert斷言
12.2.2 撰寫doctest
12.2.3 使用unittest單元測試
測試案例
測試設備
測試套件
測試執行器
12.3 效能
12.3.1 timeit模組
12.3.2 使用cProfile(profile)
12.4 重點複習
- 並行、平行與非同步
13.1 並行
13.1.1 簡介執行緒
13.1.2 執行緒的啟動至停止
阻斷
Daemon執行緒
安插執行緒
停止執行緒
13.1.3 競速、鎖定、死結
競速
鎖定
死結
13.1.4 等待與通知
Conditon
Semaphore與Barrier
13.2 平行
13.2.1 使用subprocess模組
subprocess.run()
subprocess.Popen()
13.2.2 使用multiprocessing模組
13.1.1 簡介執行緒
13.1.2 執行緒的啟動至停止
阻斷
Daemon執行緒
安插執行緒
停止執行緒
13.1.3 競速、鎖定、死結
競速
鎖定
死結
13.1.4 等待與通知
Conditon
Semaphore與Barrier
13.2 平行
13.2.1 使用subprocess模組
subprocess.run()
subprocess.Popen()
13.2.2 使用multiprocessing模組
13.3 非同步
13.3.1 使用concurrent.futures模組
ThreadPoolExecutor
ProcessPoolExecutor
13.3.2 Future與非同步
13.3.3 略談yield from與非同步
yield from與產生器
yield from與Future
13.3.4 async、asyncio與並行
13.3.5 async、await與非同步
13.3.6 非同步產生器與async for
13.3.7 情境管理器與async with
13.4 重點複習
- 進階主題
14.1 屬性控制
14.1.1 描述器
14.1.2 定義__slots__
14.1.3 __getattribute__()、__getattr__()、__setattr__()、 __delattr__()
14.2 裝飾器
14.2.1 函式裝飾器
14.2.2 類別裝飾器
14.2.3 方法裝飾器
14.1.1 描述器
14.1.2 定義__slots__
14.1.3 __getattribute__()、__getattr__()、__setattr__()、 __delattr__()
14.2 裝飾器
14.2.1 函式裝飾器
14.2.2 類別裝飾器
14.2.3 方法裝飾器
14.2.4 使用類別實作裝飾器
結合__call__()
結合__get__()
14.3 Meta類別
14.3.1 認識type類別
14.3.2 指定metaclass
14.3.3 __abstractmethods__
14.4 相對匯入
14.3.1 認識type類別
14.3.2 指定metaclass
14.3.3 __abstractmethods__
14.4 相對匯入
14.5 泛型進階
14.5.1 型態邊界
14.5.2 共變性
14.5.3 逆變性
14.6 重點複習
- 附錄A:venv
A.1 建立虛擬環境
- 附錄B:Django簡介
B.1 Django框架入門
B.1.1 Django起步走
B.1.2 建立 App 與模型
B.1.3 ORM操作
查詢全部資料
資料儲存、欄位查詢與更新
特定條件查詢
建立關聯與刪除資料
B.1.4 撰寫第一個View
B.1.5 使用模版系統
B.1.6 建立簡易表單
B.1.1 Django起步走
B.1.2 建立 App 與模型
B.1.3 ORM操作
查詢全部資料
資料儲存、欄位查詢與更新
特定條件查詢
建立關聯與刪除資料
B.1.4 撰寫第一個View
B.1.5 使用模版系統
B.1.6 建立簡易表單
- 附錄C:Beautiful Soup簡介
C.1 Beautiful Soup入門
C.1.1 Beautiful Soup起步走C.1.2 find_all()與find()
C.1.3 走訪頁面結構