《Python 3.7 技術手冊》章節目錄





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 重點複習

從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 重點複習

型態與運算子
3.1  內建型態
  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 重點複習

流程語法與函式
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.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 重點複習

類別的繼承
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.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 重點複習

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 重點複習

資料結構
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 重點複習

資料永續與交換
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 重點複習

常用內建模組
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.3.2 Pattern與Match物件
       建立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 重點複習

並行、平行與非同步
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.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.2.4   使用類別實作裝飾器
                          結合__call__()
                          結合__get__()
14.3 Meta類別
  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 建立簡易表單

附錄C:Beautiful Soup簡介
C.1  Beautiful Soup入門
    C.1.1 Beautiful Soup起步走
    C.1.2 find_all()與find()
    C.1.3 走訪頁面結構