Python風格徹底研究|超詳實、好理解的Python必學主題

    多位Python官方社群的大神技術審校和推薦 教您寫出Python風格的專業程式碼

    Collecting
    US$30.61

    內容簡介


    多位Python官方社群的大神技術審校和推薦
    教您寫出Python風格的專業程式碼

    本書全面介紹了Python語言的每項功能,為渴望寫出一流程式碼的程式設計師提供完整的學習指引。讀者將從本書深入研究慣用的Python模式,不必重新學習基礎的電腦程式設計主題,讓讀者可以立即寫出專業的Python程式。

    快速掌握Python的基本語法並設定完整的程式設計環境之後,您將會學習使用Python的動態資料型別、掌握Python對函數式和物件導向程式設計技術的支援、產生器運算式等特殊功能以及並行等進階主題。您還會學到如何對程式專案進行套裝處理、發布、除錯和測試。

    本書內容:
    ‧利用Python的動態型別來產生更乾淨簡潔、更具適應性的程式碼
    ‧利用先進的迭代技術來建立和處理您的資料
    ‧設計類別與函式,使其在運作時不會出現不必要的意外或限制
    ‧使用多重繼承和自省(自我檢查)來設計編寫出更能直接運作的類別程式
    ‧透過非同步、並行和平行等功能提高程式碼的回應能力和效能
    ‧建構Python專案以進行上線生產等級的測試和發布

    《Python風格徹底研究》一書應該是最符合Python風格的基礎程式設計讀本,本書會帶領您掌握真正符合Python風格的基礎知識,然後逐步學習和設計編寫出能上線發布使用的專業應用程式。

    作者介紹


    Jason C. McDonald 是一位軟體開發工程師、講師和小說作家、文字工作者。白天,他擔任軟體工程師的工作。夜晚,他是MousePaw Media的創辦人,這是一家開放原始碼(開源)軟體的公司,他在那裡教授和培育軟體開發的新手。一般來說,您可以在他最喜歡的咖啡店裡找到他。

    目錄


    PART I Python 環境
    第 1 章 Python 哲理
    第 2 章 您的開發環境
    第 3 章 語法課程
    第 4 章 專案結構與引入

    PART II 必學的基本結構
    第 5 章 變數與型別
    第 6 章 函式與lambda
    第 7 章 物件與類別
    第 8 章 錯誤和例外處理

    PART III 資料與流程
    第 9 章 集合與迭代
    第 10 章 產生器與綜合運算
    第 11 章 文字輸入輸出和情境管理器
    第 12 章 2 進位與序列化的處理

    PART IV 進階概念
    第 13 章 繼承和混入
    第 14 章 元類別和抽象基底類別
    第 15 章 內省和泛型
    第 16 章 非同步與並行
    第 17 章 執行緒與平行

    PART V 程式碼之外的議題
    第 18 章 套裝與發布
    第 19 章 除錯與記錄
    第 20 章 測試與效能分析
    第 21 章 未來的路徑

    附錄 A 特殊屬性和方法
    附錄 B Python 除錯器(PDB)命令
    詞彙術語

    Content

    • 1-1
      封面頁
    • 1-2
      書名頁
    • 1-3
      作者簡介
    • 1-4
      技術審校者簡介
    • 1-5
      前言
    • 1-6
      致謝
    • 1-7
      簡介
    • 1-8
      目錄
    • 1-9
      PART IPython 環境
    • 1-10
      Ch01 Python 哲理
    • 1-11
      Python 究竟是什麼?
    • 1-12
      對Python 的誤解迷思
    • 1-13
      迷思#1:Python 只是一套腳本語言
    • 1-14
      迷思#2:Python 很慢
    • 1-15
      迷思#3:Python 不能編譯
    • 1-16
      迷思#4:Python 在幕後進行編譯
    • 1-17
      迷思#5:Python 不適合大型專案
    • 1-18
      Python 2 與Python 3
    • 1-19
      定義「Python 風格(Pythonic)」的程式碼
    • 1-20
      Python 之禪
    • 1-21
      說明文件、PEP 和您
    • 1-22
      誰說了算?
    • 1-23
      Python 社群
    • 1-24
      追求明確的做法
    • 1-25
      總結
    • 1-26
      Ch02 您的開發環境
    • 1-27
      安裝Python
    • 1-28
      在Windows 中安裝
    • 1-29
      在macOS 中安裝
    • 1-30
      在Linux 中安裝
    • 1-31
      以原始程式碼來安裝
    • 1-32
      使用直譯器
    • 1-33
      互動對話
    • 1-34
      執行Python 程式檔
    • 1-35
      套件和虛擬環境
    • 1-36
      建立虛擬環境
    • 1-37
      啟用虛擬環境
    • 1-38
      離開虛擬環境
    • 1-39
      簡介pip
    • 1-40
      系統範圍的套件
    • 1-41
      安裝套件
    • 1-42
      requirements.txt
    • 1-43
      套件更新
    • 1-44
      移除套件
    • 1-45
      找出要想的套件
    • 1-46
      關於pip 要特別留意的警告⋯
    • 1-47
      虛擬環境與Git
    • 1-48
      檔案中Shebang 的情況
    • 1-49
      檔案編碼
    • 1-50
      一些額外的虛擬環境使用技巧
    • 1-51
      使用沒有啟用的虛擬環境
    • 1-52
      其他選擇
    • 1-53
      PEP 8 簡介
    • 1-54
      每行程式碼的字元限制
    • 1-55
      定位點或是空格?
    • 1-56
      品質控制:靜態分析工具
    • 1-57
      Pylint
    • 1-58
      Flake8
    • 1-59
      Mypy
    • 1-60
      Style Janitors:自動格式化工具
    • 1-61
      autopep8
    • 1-62
      Black
    • 1-63
      測試框架
    • 1-64
      導覽各種程式碼編輯器
    • 1-65
      IDLE
    • 1-66
      Emacs 與Vim
    • 1-67
      PyCharm
    • 1-68
      Visual Studio Code
    • 1-69
      Sublime Text
    • 1-70
      Spyder
    • 1-71
      Eclipse + PyDev/LiClipse
    • 1-72
      The Eric Python IDE
    • 1-73
      總結
    • 1-74
      Ch03 語法課程
    • 1-75
      Hello, World!
    • 1-76
      陳述式與運算式
    • 1-77
      空白的重要性
    • 1-78
      什麼都不做
    • 1-79
      注釋與說明字串
    • 1-80
      說明字串
    • 1-81
      宣告變數
    • 1-82
      常數要怎麼用?
    • 1-83
      數學運算
    • 1-84
      認識數值型別
    • 1-85
      運算子
    • 1-86
      math 模組
    • 1-87
      邏輯運算
    • 1-88
      條件
    • 1-89
      比較運算子
    • 1-90
      布林、None 和識別運算子
    • 1-91
      真值
    • 1-92
      邏輯運算子
    • 1-93
      海象運算子
    • 1-94
      省略符號
    • 1-95
      字串
    • 1-96
      字串字面值
    • 1-97
      原始字串
    • 1-98
      格式化字串
    • 1-99
      樣板字串
    • 1-100
      字串轉換
    • 1-101
      關於字串連接的注意事項
    • 1-102
      函式
    • 1-103
      類別與物件
    • 1-104
      錯誤處理
    • 1-105
      元組與串列
    • 1-106
      迴圈
    • 1-107
      while 迴圈
    • 1-108
      迴圈控制
    • 1-109
      for 迴圈
    • 1-110
      結構化模式比對
    • 1-111
      字面值模式和萬用字元
    • 1-112
      Or 模式
    • 1-113
      捕捉模式
    • 1-114
      守衛陳述式
    • 1-115
      更多關於結構化模式比對的內容
    • 1-116
      總結
    • 1-117
      Ch04 專案結構與引入
    • 1-118
      設定儲存庫
    • 1-119
      模組和套件
    • 1-120
      PEP 8 與命名規範
    • 1-121
      專案目錄結構
    • 1-122
      import 的工作原理
    • 1-123
      import 能做和不能做的事項
    • 1-124
      從模組引入函式
    • 1-125
      遮蔽的問題
    • 1-126
      巢狀套件的問題
    • 1-127
      小心使用import *
    • 1-128
      在您的專案中引入
    • 1-129
      以絕對位置來引入
    • 1-130
      以相對位置來引入
    • 1-131
      從相同的套件中引入
    • 1-132
      入口點
    • 1-133
      模組入口點
    • 1-134
      套件入口點
    • 1-135
      控制套件引入
    • 1-136
      程式入口點
    • 1-137
      Python 模組搜尋路徑
    • 1-138
      真實的運作原理
    • 1-139
      總結
    • 1-140
      PART II必學的基本結構
    • 1-141
      Ch05 變數與型別
    • 1-142
      在Python 中的變數:名稱與值
    • 1-143
      指定
    • 1-144
      資料型別
    • 1-145
      type() 函式
    • 1-146
      鴨子型別(duck typing)
    • 1-147
      作用域與垃圾回收
    • 1-148
      區域範圍和參照計數垃圾回收器
    • 1-149
      直譯器關閉
    • 1-150
      全域作用域
    • 1-151
      全域作用域的危險之處
    • 1-152
      nonlocal 關鍵字
    • 1-153
      作用域的解析
    • 1-154
      類別的奇怪案例
    • 1-155
      世代式垃圾回收器
    • 1-156
      不變的事實
    • 1-157
      透過指定傳遞
    • 1-158
      集合與參照
    • 1-159
      淺複製
    • 1-160
      深複製
    • 1-161
      強制轉型與轉換
    • 1-162
      關於系統匈牙利命名法的注意事項
    • 1-163
      術語回顧
    • 1-164
      總結
    • 1-165
      Ch06 函式與lambda
    • 1-166
      Python 函式基礎知識
    • 1-167
      遞迴
    • 1-168
      預設引數值
    • 1-169
      關鍵字引數
    • 1-170
      多載函式
    • 1-171
      可變引數
    • 1-172
      關鍵字可變引數
    • 1-173
      僅限關鍵字參數
    • 1-174
      僅限位置參數
    • 1-175
      引數型別:現在都放在一起!
    • 1-176
      巢狀函式
    • 1-177
      閉包
    • 1-178
      以閉包來遞迴
    • 1-179
      有狀態的閉包
    • 1-180
      Lambdas 的運用
    • 1-181
      為什麼lambda 很有用?
    • 1-182
      把lambdas 當作排序鍵
    • 1-183
      裝飾器
    • 1-184
      型別提示與函式註釋
    • 1-185
      鴨子型別與型別提示
    • 1-186
      您應該使用型別提示嗎?
    • 1-187
      總結
    • 1-188
      Ch07 物件與類別
    • 1-189
      宣告類別
    • 1-190
      初始化方法
    • 1-191
      建構方法
    • 1-192
      終結方法
    • 1-193
      屬性
    • 1-194
      實例屬性
    • 1-195
      類別屬性
    • 1-196
      作用域的命名慣例
    • 1-197
      非公開
    • 1-198
      公開
    • 1-199
      名稱改編
    • 1-200
      何時使用公開、非公開或是名稱改編?
    • 1-201
      方法
    • 1-202
      實例方法
    • 1-203
      類別方法
    • 1-204
      靜態方法
    • 1-205
      特性
    • 1-206
      設定場景
    • 1-207
      定義特性
    • 1-208
      使用裝飾器的特性
    • 1-209
      不使用property 的時機
    • 1-210
      特殊方法
    • 1-211
      場景設定
    • 1-212
      轉換方法
    • 1-213
      比較方法
    • 1-214
      二元運算子的支援
    • 1-215
      單元運算子的支援
    • 1-216
      製作可呼叫物件
    • 1-217
      更多特殊方法:向前看
    • 1-218
      類別裝飾器
    • 1-219
      與物件的結構化模式比對匹配
    • 1-220
      當函數式遇見物件導向
    • 1-221
      使用類別的時機
    • 1-222
      類別不是模組
    • 1-223
      單一職責
    • 1-224
      分享狀態
    • 1-225
      物件真的適合您嗎?
    • 1-226
      總結
    • 1-227
      Ch08 錯誤和例外處理
    • 1-228
      在Python 中的例外
    • 1-229
      閱讀Traceback 的內容
    • 1-230
      捕捉例外:LBYL vs. EAFP
    • 1-231
      多重例外
    • 1-232
      小心Diaper 反面模式
    • 1-233
      引發例外
    • 1-234
      使用例外
    • 1-235
      例外與日誌記錄
    • 1-236
      冒泡技巧
    • 1-237
      例外鏈
    • 1-238
      Else 和Finally
    • 1-239
      Else:「如果一切都順利」
    • 1-240
      Finally:「一切之後」
    • 1-241
      建立例外
    • 1-242
      各種例外的展示
    • 1-243
      總結
    • 1-244
      PART III資料與流程
    • 1-245
      Ch09 集合與迭代
    • 1-246
      迴圈
    • 1-247
      while 迴圈
    • 1-248
      for 迴圈
    • 1-249
      集合
    • 1-250
      元組
    • 1-251
      附名元組
    • 1-252
      串列
    • 1-253
      雙向佇列
    • 1-254
      集合
    • 1-255
      frozenset
    • 1-256
      字典
    • 1-257
      檢查或是排除?
    • 1-258
      字典變體應用
    • 1-259
      拆解集合
    • 1-260
      星號運算式
    • 1-261
      拆解字典
    • 1-262
      集合的結構化模式比對
    • 1-263
      由索引或鍵來存取
    • 1-264
      切片表示法
    • 1-265
      切片的起算和結束
    • 1-266
      負值索引下標
    • 1-267
      切片的跳隔幅度
    • 1-268
      複製切片
    • 1-269
      slice 物件
    • 1-270
      在自訂物件上切片
    • 1-271
      使用islice
    • 1-272
      in 運算子
    • 1-273
      檢查集合的長度
    • 1-274
      迭代
    • 1-275
      可迭代物件和迭代器
    • 1-276
      手動使用迭代器
    • 1-277
      使用for 迴圈來進行迭代
    • 1-278
      在迴圈中排序集合
    • 1-279
      列舉迴圈
    • 1-280
      迴圈中的變更
    • 1-281
      迴圈的巢狀嵌套與替代方案
    • 1-282
      迭代工具
    • 1-283
      基本內建工具
    • 1-284
      Filter
    • 1-285
      Map
    • 1-286
      Zip
    • 1-287
      Itertools
    • 1-288
      自訂可迭代類別
    • 1-289
      總結
    • 1-290
      Ch10 產生器與綜合運算
    • 1-291
      惰性求值與積極的可迭代物件
    • 1-292
      無限迭代器
    • 1-293
      產生器
    • 1-294
      產生器與迭代器類別
    • 1-295
      關閉產生器
    • 1-296
      關閉的動作
    • 1-297
      丟出例外
    • 1-298
      使用yield from
    • 1-299
      產生器運算式
    • 1-300
      產生器物件是有隋性的
    • 1-301
      使用多重迴圈的產生器運算式
    • 1-302
      在產生器運算式中的條件式
    • 1-303
      巢狀產生器運算式
    • 1-304
      串列綜合運算
    • 1-305
      集合綜合運算
    • 1-306
      字典綜合運算
    • 1-307
      產生器運算式的危險性
    • 1-308
      很快就變得難以閱讀
    • 1-309
      不能取代迴圈
    • 1-310
      很難除錯
    • 1-311
      使用產生器運算式的時機
    • 1-312
      簡易型協程
    • 1-313
      從協程返回值
    • 1-314
      行為的順序
    • 1-315
      什麼是非同步?
    • 1-316
      總結
    • 1-317
      Ch11 文字輸入輸出和情境管理器
    • 1-318
      標準的輸入與輸出
    • 1-319
      再探print() 功能
    • 1-320
      再探input() 函式
    • 1-321
      串流
    • 1-322
      情境管理器基礎概念
    • 1-323
      檔案模式
    • 1-324
      讀取檔案
    • 1-325
      read() 方法
    • 1-326
      readline() 方法
    • 1-327
      readlines() 方法
    • 1-328
      以迭代來讀取
    • 1-329
      串流位置
    • 1-330
      寫入檔案
    • 1-331
      write() 方法
    • 1-332
      writelines() 方法
    • 1-333
      使用print() 寫入檔案
    • 1-334
      換行分隔符號
    • 1-335
      情境管理器的細節
    • 1-336
      情境管理器的原理
    • 1-337
      使用多重情境管理器
    • 1-338
      實作情境管理協定
    • 1-339
      __enter__() 方法
    • 1-340
      __exit__() 方法
    • 1-341
      使用自訂類別
    • 1-342
      路徑
    • 1-343
      路徑物件
    • 1-344
      路徑的組成部分
    • 1-345
      建立路徑
    • 1-346
      相對路徑
    • 1-347
      套件的相對路徑
    • 1-348
      Path 的相關操作
    • 1-349
      非原地檔案寫入
    • 1-350
      os 模組
    • 1-351
      檔案格式
    • 1-352
      JSON
    • 1-353
      其他格式
    • 1-354
      總結
    • 1-355
      Ch12 2 進位與序列化的處理
    • 1-356
      2 進位表示法和位元運算
    • 1-357
      複習一下數字系統
    • 1-358
      Python 整數與2 進位
    • 1-359
      位元運算子
    • 1-360
      位元組字面值
    • 1-361
      類位元組物件
    • 1-362
      建立位元組物件
    • 1-363
      使用int.to_bytes()
    • 1-364
      序列操作
    • 1-365
      位元組轉換成整數
    • 1-366
      使用struct
    • 1-367
      struct 格式字串和打包
    • 1-368
      使用struct 解開資料
    • 1-369
      struct 物件
    • 1-370
      類位元組物件的位元運算操作
    • 1-371
      透過整數進行位元運算操作
    • 1-372
      透過迭代進行位元運算操作
    • 1-373
      使用memoryview
    • 1-374
      讀取與寫入2 進位資料
    • 1-375
      組織資料
    • 1-376
      寫入檔案
    • 1-377
      從2 進位檔讀取資料
    • 1-378
      2 進位串流中的移位處理
    • 1-379
      使用BufferedRWPair
    • 1-380
      序列化的技術
    • 1-381
      禁用工具:pickle、marshal 和shelve
    • 1-382
      序列化格式
    • 1-383
      總結
    • 1-384
      PART IV進階概念
    • 1-385
      Ch13 繼承和混入
    • 1-386
      繼承的使用時機
    • 1-387
      繼承的罪過
    • 1-388
      Python 繼承的基礎知識
    • 1-389
      多重繼承
    • 1-390
      方法解析順序
    • 1-391
      維持一致的方法解析順序
    • 1-392
      明確的解析順序
    • 1-393
      多重繼承中的解析基底類別
    • 1-394
      混入
    • 1-395
      總結
    • 1-396
      Ch14 元類別和抽象基底類別
    • 1-397
      元類別
    • 1-398
      使用type 建立類別
    • 1-399
      自訂元類別
    • 1-400
      透過鴨子型別來設定型別的期望
    • 1-401
      EAFP:捕捉例外
    • 1-402
      LBYL:檢查屬性
    • 1-403
      抽象類別
    • 1-404
      內建抽象基底類別
    • 1-405
      從抽象基底類別衍生
    • 1-406
      實作自訂抽象基底類別
    • 1-407
      虛擬子類別
    • 1-408
      設定範例
    • 1-409
      使用虛擬子類別
    • 1-410
      總結
    • 1-411
      Ch15 內省和泛型
    • 1-412
      特殊屬性
    • 1-413
      內部物件屬性存取:__dict__特殊屬性
    • 1-414
      列出屬性
    • 1-415
      取得屬性
    • 1-416
      檢查屬性
    • 1-417
      設定屬性
    • 1-418
      刪除屬性
    • 1-419
      函式屬性
    • 1-420
      函式屬性的錯誤用法
    • 1-421
      可變性和函數屬性
    • 1-422
      描述器
    • 1-423
      描述器協定
    • 1-424
      以錯誤的方式編寫描述器類別
    • 1-425
      使用描述器
    • 1-426
      以正確的方式編寫描述符類別
    • 1-427
      在同一個類別中使用多重描述器
    • 1-428
      Slots 的運用
    • 1-429
      將屬性名稱綁定到值
    • 1-430
      使用帶有Slots 的任意屬性
    • 1-431
      Slots 與繼承
    • 1-432
      不可變類別
    • 1-433
      單一調度泛型函式
    • 1-434
      使用型別提示登錄單一調度函式
    • 1-435
      使用顯式型別登錄單一調度函式
    • 1-436
      使用register() 方法登錄單一調度函式
    • 1-437
      使用Element 類別
    • 1-438
      任意執行
    • 1-439
      總結
    • 1-440
      Ch16 非同步與並行
    • 1-441
      在Python 中的非同步
    • 1-442
      範例場景:Collatz 遊戲,同步版本
    • 1-443
      非同步
    • 1-444
      原生協程
    • 1-445
      工作
    • 1-446
      事件迴圈
    • 1-447
      讓它真正非同步
    • 1-448
      排程與非同步執行流程
    • 1-449
      簡化程式碼
    • 1-450
      非同步迭代
    • 1-451
      非同步情境管理器
    • 1-452
      非同步產生器
    • 1-453
      其他非同步的概念
    • 1-454
      總結
    • 1-455
      Ch17 執行緒與平行
    • 1-456
      執行緒
    • 1-457
      並行與平行
    • 1-458
      基本的執行緒處理
    • 1-459
      逾時
    • 1-460
      Daemon 執行緒
    • 1-461
      Futures 和Executors
    • 1-462
      以Future 來處理逾時
    • 1-463
      競爭條件
    • 1-464
      競爭條件的範例
    • 1-465
      使用ThreadPoolExecutor 建立多個執行緒
    • 1-466
    • 1-467
      死鎖、活鎖與飢餓
    • 1-468
      以佇列傳遞訊息
    • 1-469
      使用多重workers 執行緒的futures
    • 1-470
      以多行程來實現平行處理
    • 1-471
      醃漬資料
    • 1-472
      速度考量和ProcessPoolExecutor
    • 1-473
      Producer/Consumer 問題
    • 1-474
      引入模組
    • 1-475
      監控佇列
    • 1-476
      子行程的清理
    • 1-477
      Consumer
    • 1-478
      檢查空的佇列
    • 1-479
      Producer
    • 1-480
      啟動行程
    • 1-481
      效能結果
    • 1-482
      多行程處理的日誌記錄
    • 1-483
      總結
    • 1-484
      PART V程式碼之外的議題
    • 1-485
      Ch18 套裝與發布
    • 1-486
      規劃您的套裝處理
    • 1-487
      貨物崇拜程式設計的危險
    • 1-488
      套裝的說明
    • 1-489
      決定套裝的目標
    • 1-490
      專案結構:src 或src-less
    • 1-491
      使用setuptools 套裝發布套件
    • 1-492
      專案檔與結構
    • 1-493
      元資料的歸屬
    • 1-494
      README.md 和LICENSE 檔
    • 1-495
      setup.cfg 檔
    • 1-496
      setup.py 檔
    • 1-497
      MANIFEST.in 檔
    • 1-498
      requirements.txt 檔
    • 1-499
      pyproject.toml 檔
    • 1-500
      測試安裝設定配置
    • 1-501
      建置套件
    • 1-502
      發行到pip(Twine)
    • 1-503
      上傳到Test PyPI
    • 1-504
      安裝上傳的套件
    • 1-505
      上傳到PyPI
    • 1-506
      其他替代的套裝工具
    • 1-507
      Poetry
    • 1-508
      Flit
    • 1-509
      發布到終端使用者
    • 1-510
      PEX
    • 1-511
      Freezers
    • 1-512
      映像檔和容器
    • 1-513
      對原生Linux 套裝的補充說明
    • 1-514
      說明文件
    • 1-515
      總結
    • 1-516
      Ch19 除錯與記錄
    • 1-517
      警告
    • 1-518
      警告的類型
    • 1-519
      過濾警告
    • 1-520
      隱藏重複的警告
    • 1-521
      將警告轉換成例外
    • 1-522
      記錄
    • 1-523
      Logger 物件
    • 1-524
      Handler 物件
    • 1-525
      依不同級別來記錄
    • 1-526
      控制Log 級別
    • 1-527
      執行範例
    • 1-528
      Filter、Formatter 與配置設定
    • 1-529
      Assert 陳述式
    • 1-530
      正確使用assert
    • 1-531
      錯誤使用assert
    • 1-532
      觀看assert 的實際執行
    • 1-533
      inspect 模組
    • 1-534
      使用pdb
    • 1-535
      除錯範例
    • 1-536
      啟動除錯器
    • 1-537
      Debugger shell 模式的命令
    • 1-538
      逐步執行程式碼
    • 1-539
      設定中斷點並步進函式
    • 1-540
      穿越執行堆疊
    • 1-541
      檢查原始碼
    • 1-542
      檢查解決方案
    • 1-543
      事後剖析除錯
    • 1-544
      使用faulthandler
    • 1-545
      使用Bandit 評估程式的安全性
    • 1-546
      向Python 回報錯誤
    • 1-547
      總結
    • 1-548
      Ch20 測試與效能分析
    • 1-549
      測試驅動開發(TDD)
    • 1-550
      測試框架
    • 1-551
      範例專案
    • 1-552
      測試和專案結構
    • 1-553
      測試基礎
    • 1-554
      開始編寫範例
    • 1-555
      單元測試
    • 1-556
      以pytest 執行測試
    • 1-557
      例外測試
    • 1-558
      Test Fixtures 的運用
    • 1-559
      延續這個例子:API 的使用
    • 1-560
      在測試模組間共享資料
    • 1-561
      不穩定測試和有條件跳過測試
    • 1-562
      進階的Fixtures 工具:造假模擬和參數化
    • 1-563
      延續這個例子:代表打字的錯誤
    • 1-564
      參數化
    • 1-565
      Fixture 的間接參數化
    • 1-566
      使用Monkeypatch 進行輸入模擬
    • 1-567
      標記
    • 1-568
      從標準串流捕捉
    • 1-569
      GUI 測試
    • 1-570
      延續這個例子:連接API 到Typo
    • 1-571
      Autouse Fixtures
    • 1-572
      混合參數化
    • 1-573
      模糊測試
    • 1-574
      範例的總結
    • 1-575
      程式碼覆蓋率
    • 1-576
      使用tox 進行自動化測試
    • 1-577
      效能測試與效能分析
    • 1-578
      使用timeit 進行效能測試
    • 1-579
      使用cProfile 或profile 進行效能分析
    • 1-580
      tracemalloc
    • 1-581
      總結
    • 1-582
      Ch21 未來的路徑
    • 1-583
      關於未來
    • 1-584
      未來有哪些延伸的路徑?
    • 1-585
      Python 應用程式開發
    • 1-586
      Python 遊戲開發
    • 1-587
      Python 網頁開發
    • 1-588
      客戶端的Python
    • 1-589
      Python 的資料科學
    • 1-590
      Python 的機器學習
    • 1-591
      安全性
    • 1-592
      Python 的嵌入式開發
    • 1-593
      編寫腳本
    • 1-594
      Python 的偏好
    • 1-595
      參與Python 的開發
    • 1-596
      開發Python 套件和工具
    • 1-597
      開發Python 擴充模組
    • 1-598
      貢獻給Python
    • 1-599
      參與Python 社群
    • 1-600
      提問
    • 1-601
      回答問題
    • 1-602
      使用者團體
    • 1-603
      PyLadies 團體
    • 1-604
      研討會
    • 1-605
      加入Python 軟體基金會
    • 1-606
      這條路還很長⋯
    • 1-607
      附錄A 特殊屬性和方法
    • 1-608
      附錄B Python 除錯器(PDB)命令
    • 1-609
      詞彙術語
    • 1-610
      版權頁
    • 1-611
      封底頁

    FAQ

    您可以透過手機、平板或是電腦登入 HiSKIO 平台,在【我的學習】>【我的書籍】頁面,選擇想看的電子書。

    Recommendations

    Reviews

    | Collecting

    Sales Plans