Python功力提升的樂趣|寫出乾淨程式碼的最佳實務

    如果您已讀過《Python自動化的樂趣》這本暢銷書,學到了基礎的Python知識後,下一步想要成為更有實力的軟體開發工程師時,還需要學習什麼樣Python的知識呢?

    收集中
    US$15.73
    如果您已讀過《Python自動化的樂趣》這本暢銷書,學到了基礎的Python知識後,下一步想要成為更有實力的軟體開發工程師時,還需要學習什麼樣Python的知識呢?

    歡迎您繼續閱讀本書,您不僅能學到進階的語法和編寫乾淨程式碼的精妙技巧,還能學到如何使用命令行和其他專業工具(如程式碼格式化程式、型別檢查器、linters和版本控制等)來提高Python程式設計的技能。本書作者Sweigart會帶領您使用最佳實務的作法來設定開發環境,為變數取好的名稱和提高可讀性,然後學習怎麼寫出好的說明文件,對程式做出好的組織管理,對程式做出正確的效能評測,以及物件導向設計的觀念,還有大O演算法分析等知識。這些進階的技能可以大幅提升您的程式開發能力,這些知識不僅是對Python語言有用,對任何其他程式語言也同樣有用。

    本書精彩的內容:
    ‧寫出Python風格的程式碼,以及怎麼利用Python的Black自動格式化工具來寫出乾淨的程式碼
    ‧常見的程式碼錯誤,以及怎麼利用靜態分析器偵測出這些錯誤
    ‧活用Cookiecutter範本工具來組織管理程式專案的相關檔案結構
    ‧學會lambda和高階函式等相關的函式程式設計技巧
    ‧活用Python內建的timeit和cProfile模組來分析程式的速度
    ‧學會正確編寫注釋、文件字串,讓這些內容更有描述性和資訊力,並掌握編寫的時機
    ‧學到Python的物件導向程式設計、類別、繼承和property和dunder方法

    沒有一本書可以馬上就能讓您成為專業的軟體開發專家,但本書除了教您活用Python的基本知識之外,您還能學到怎麼寫出易於除錯且具有Python風格的可讀程式碼,能讓您在邁向專業的路途中更為順暢。

    章節目錄

    • 1-1
      封面頁
    • 1-2
      書名頁
    • 1-3
      作者簡介
    • 1-4
      技術審校者簡介
    • 1-5
      致謝
    • 1-6
      目錄
    • 1-7
      簡介
    • 1-8
      本書的適用對象和特點
    • 1-9
      關於本書
    • 1-10
      您的程式設計旅程
    • 1-11
      PART 1 : 起程
    • 1-12
      CH01 處理錯誤和尋求協助
    • 1-13
      怎樣了解Python 錯誤訊息?
    • 1-14
      檢查traceback 內容
    • 1-15
      搜尋錯誤訊息
    • 1-16
      利用Linters 來避免錯誤
    • 1-17
      程式問題要怎麼提問才正確?
    • 1-18
      一次提供所有的資訊,避免來回補充
    • 1-19
      以真實問題的形式來陳述問題
    • 1-20
      在合適的網站上提問
    • 1-21
      問題摘要放在標題上
    • 1-22
      解釋您想要讓程式怎麼運作
    • 1-23
      放上完整的錯誤訊息
    • 1-24
      放上完整的程式碼
    • 1-25
      以適當的格式化讓程式碼具有可讀性
    • 1-26
      告知幫您的人已做了哪些嘗試
    • 1-27
      描述您的設定
    • 1-28
      提問的實例
    • 1-29
      總結
    • 1-30
      CH02 環境設定與命令提示模式
    • 1-31
      檔案系統
    • 1-32
      Python 中的路徑
    • 1-33
      家目錄
    • 1-34
      目前工作目錄
    • 1-35
      絕對與相對位置
    • 1-36
      程式與處理程序
    • 1-37
      命令提示模式
    • 1-38
      開啟終端視窗
    • 1-39
      從命令提示模式執行程式
    • 1-40
      使用命令行引數
    • 1-41
      在命令提示模式使用 -c 執行Python 程式碼
    • 1-42
      從命令提示模式執行Python 程式檔
    • 1-43
      執行py.exe 程式
    • 1-44
      從Python 程式內執行命令提示模式中的命令
    • 1-45
      使用Tab 鍵自動完成來縮減輸入的動作
    • 1-46
      檢視命令的使用歷史紀錄
    • 1-47
      常用命令的活用
    • 1-48
      環境變數和PATH
    • 1-49
      檢視環境變數
    • 1-50
      使用PATH 環境變數
    • 1-51
      變更命令提示模式的PATH 環境變數
    • 1-52
      在Windows 中永久性新增資料夾路徑到PATH 中
    • 1-53
      在macOS和Linux 中永久性新增資料夾路徑到PATH
    • 1-54
      不使用命令提示模式執行Python 程式檔
    • 1-55
      在Windows 中執行Python 程式檔
    • 1-56
      在macOS 中執行Python 程式檔
    • 1-57
      在Ubuntu Linux 執行Python 程式檔
    • 1-58
      總結
    • 1-59
      PART 2最佳實務、工具和技能
    • 1-60
      CH03 使用Black 進行程式碼格式化
    • 1-61
      哪些編寫程式的行為最討人厭?
    • 1-62
      風格樣式指南與PEP 8
    • 1-63
      水平間距
    • 1-64
      使用空格來進行內縮
    • 1-65
      一行之間的留白
    • 1-66
      垂直間距
    • 1-67
      垂直間距的實例
    • 1-68
      垂直間距的最佳作法
    • 1-69
      Black 是一套毫不妥協的程式碼格式化工具
    • 1-70
      安裝Black
    • 1-71
      從命令提示模式執行Black
    • 1-72
      在部分程式碼中停用Black 工具
    • 1-73
      總結
    • 1-74
      CH04 選用易懂的命名
    • 1-75
      大小寫的風格
    • 1-76
      PEP 8 的命名慣例
    • 1-77
      使用適當長度的名稱
    • 1-78
      名稱太短
    • 1-79
      名稱太長
    • 1-80
      讓名稱變得好尋找
    • 1-81
      避免用玩笑、雙關語和文化隱喻來命名
    • 1-82
      不要使用內建的名稱
    • 1-83
      史上最糟的變數名稱
    • 1-84
      總結
    • 1-85
      CH05 找出程式碼的異味
    • 1-86
      重複的程式碼
    • 1-87
      魔術數字
    • 1-88
      注釋掉的程式碼和死碼
    • 1-89
      印出除錯訊息
    • 1-90
      以數字為後置的變數
    • 1-91
      濫用類別
    • 1-92
      串列推導式中又有串列推導式
    • 1-93
      空的except 區塊與不好的錯誤訊息
    • 1-94
      程式碼異味的迷思
    • 1-95
      迷思:函式末尾應該只有一個return
    • 1-96
      迷思:函式中最多應該只有一個try 陳述句
    • 1-97
      迷思:旗標引數是不好的
    • 1-98
      迷思:全域變數是不好的
    • 1-99
      迷思:注釋是不需要的
    • 1-100
      總結
    • 1-101
      CH06 寫出Pythonic 風格的程式碼
    • 1-102
      Python 之襌
    • 1-103
      學會正確使用具有意義的縮排方式
    • 1-104
      常見的語法誤用
    • 1-105
      使用enumerate() 而不要用range()
    • 1-106
      使用with 陳述式而不要用open() 和close()
    • 1-107
      使用is 來比較是否為None 而不用 == 來處理
    • 1-108
      格式化字串
    • 1-109
      若字串中有很多反斜線,建議使用原始字串來處理
    • 1-110
      使用f-strings 來格式化字串
    • 1-111
      串列的淺複製
    • 1-112
      以Pythonic 風格來運用字典
    • 1-113
      使用get() 和setdefault() 來處理字典
    • 1-114
      使用collections.defaultdict 處理預設值
    • 1-115
      使用字典而不要用switch 語法
    • 1-116
      條件表示式:Python 的「醜陋」三元運算子
    • 1-117
      變數值的處理
    • 1-118
      鏈接指定與比較運算子
    • 1-119
      檢查變數是否為多個值中一個
    • 1-120
      總結
    • 1-121
      CH07 程式設計的行話
    • 1-122
      定義
    • 1-123
      Python 語言和Python 直譯器
    • 1-124
      垃圾回收
    • 1-125
      字面值
    • 1-126
      關鍵字
    • 1-127
      物件、值、實例和識別子
    • 1-128
      項目
    • 1-129
      可變與不可變
    • 1-130
      索引、鍵和雜湊
    • 1-131
      容器、序列、對映和集合型別
    • 1-132
      Dunder 方法與Magic 方法
    • 1-133
      模組和套件
    • 1-134
      可呼叫與第一類物件
    • 1-135
      一般常誤用的術語
    • 1-136
      陳述句與表示式
    • 1-137
      區塊、子句、正文
    • 1-138
      變數與屬性
    • 1-139
      函式、方法
    • 1-140
      Iterable、Iterator
    • 1-141
      語法、執行時期、語義錯誤
    • 1-142
      參數、引數
    • 1-143
      Type Coercion、Type Casting
    • 1-144
      Property、Attribute
    • 1-145
      位元組碼、機器碼
    • 1-146
      腳本、程式、腳本語言、程式語言
    • 1-147
      程式庫、框架、SDK、引擎、API
    • 1-148
      總結
    • 1-149
      進一步的補充
    • 1-150
      CH08 常見的Python 誤解和陷阱
    • 1-151
      不要對迴圈中用來遍訪的串列新增或刪除項目
    • 1-152
      一定要用copy.copy() 和copy.deepcopy()來複製可變值
    • 1-153
      不要使用可變物件作為預設引數
    • 1-154
      不要以字串連接來製作字串
    • 1-155
      不要期望sort() 會按字母順序來排序
    • 1-156
      不要假設浮點數是完全精確的
    • 1-157
      不要鏈接 != 運算子
    • 1-158
      多元組中只有一個項目也不要忘記加逗號
    • 1-159
      總結
    • 1-160
      CH09 少為人知的Python 奇異之處
    • 1-161
      為什麼256 是256,而257 不是257?
    • 1-162
      字串駐留
    • 1-163
      Python 假的遞增和遞減運算子
    • 1-164
      all() 函式傳入空的資料
    • 1-165
      布林值是整數值
    • 1-166
      鏈接多種運算子
    • 1-167
      Python 的Antigravity 彩蛋
    • 1-168
      總結
    • 1-169
      CH10 寫出有效率的函式
    • 1-170
      函式名稱
    • 1-171
      函式規模大小的取捨
    • 1-172
      函式的參數和引數
    • 1-173
      預設引數
    • 1-174
      使用 * 和 ** 把引數傳入函式
    • 1-175
      使用 * 建立可變參數函式
    • 1-176
      使用 ** 建立可變參數函式
    • 1-177
      使用 * 和 ** 建立包裝函式
    • 1-178
      函式語言程式設計
    • 1-179
      副作用
    • 1-180
      高階函式
    • 1-181
      Lambda 函式
    • 1-182
      使用串列推導式進行對映和過濾
    • 1-183
      返回值應該都要有相同的資料型別
    • 1-184
      引發例外與返回錯誤碼
    • 1-185
      總結
    • 1-186
      CH11 注釋、文件字串和型別提示
    • 1-187
      注釋
    • 1-188
      注釋風格
    • 1-189
      行內注釋
    • 1-190
      解說型的注釋
    • 1-191
      總結型注釋
    • 1-192
      經驗教訓型注釋
    • 1-193
      法律型注釋
    • 1-194
      專業型注釋
    • 1-195
      Codetags 和TODO 注釋
    • 1-196
      魔法型注釋和原始檔案編碼
    • 1-197
      文件字串
    • 1-198
      型別提示
    • 1-199
      使用靜態分析器
    • 1-200
      設定多種型別的型別提示
    • 1-201
      設定串列、字典等的型別提示
    • 1-202
      使用注釋處理向後移植型別提示
    • 1-203
      總結
    • 1-204
      CH12 使用Git 來組織程式碼專案
    • 1-205
      Git 的Commit 和Repo
    • 1-206
      使用Cookiecutter 建立新的Python 專案
    • 1-207
      安裝Git
    • 1-208
      配置Git 的使用者名稱和電子郵件
    • 1-209
      安裝GUI Git 工具
    • 1-210
      Git 工作流程
    • 1-211
      Git 是怎麼追蹤檔案的狀態?
    • 1-212
      為什麼要預存檔案?
    • 1-213
      在您的電腦中建立Git 倉庫
    • 1-214
      新增要追蹤的Git 檔案
    • 1-215
      忽略倉庫中的檔案
    • 1-216
      提交變更
    • 1-217
      從倉庫中刪除檔案
    • 1-218
      對倉庫中的檔案進行重新命名和搬移
    • 1-219
      檢閱提交記錄
    • 1-220
      還原舊的變更
    • 1-221
      復原未提交的本機變更
    • 1-222
      把已預存的檔案改為未預存
    • 1-223
      回退到最近一次提交
    • 1-224
      針對某個持定提交的某個檔案進行回退處理
    • 1-225
      重新編寫提交歷史紀錄
    • 1-226
      GitHub 和git push 命令
    • 1-227
      把現有的倉庫推送到GitHub
    • 1-228
      從現有的GitHub 倉庫來複製倉庫
    • 1-229
      總結
    • 1-230
      CH13 評測效能和大O 演算法分析
    • 1-231
      timeit 模組
    • 1-232
      cProfile 效能分析器
    • 1-233
      大O 演算法分析
    • 1-234
      大O 階層
    • 1-235
      以書架來比喻大O 的階層
    • 1-236
      以大O 評測最壞情況
    • 1-237
      評測程式碼的大O 階層
    • 1-238
      為什麼低階和係數不重要?
    • 1-239
      大O 分析的實例
    • 1-240
      一般函式呼叫的大O 階層
    • 1-241
      快速瀏覽大O 的分析
    • 1-242
      在n 值很小時大O 的影響不大,而n 值通常都很小
    • 1-243
      總結
    • 1-244
      CH14 實務專案
    • 1-245
      河內塔
    • 1-246
      輸出
    • 1-247
      原始程式碼
    • 1-248
      編寫程式碼
    • 1-249
      四子棋
    • 1-250
      輸出
    • 1-251
      原始程式碼
    • 1-252
      編寫程式碼
    • 1-253
      總結
    • 1-254
      PART 3 : 物件導向的Python
    • 1-255
      CH15 物件導向程式設計與類別
    • 1-256
      現實的模擬:填寫表單
    • 1-257
      從類別建立物件
    • 1-258
      建立一個簡單的類別:WizCoin
    • 1-259
      方法、__init__() 和self
    • 1-260
      屬性
    • 1-261
      私有屬性與私有方法
    • 1-262
      type() 函式和 __qualname__ 屬性
    • 1-263
      非OOP 與OOP 範例:井字棋
    • 1-264
      為現實世界設計類別並不容易
    • 1-265
      總結
    • 1-266
      CH16 物件導向程式設計與繼承
    • 1-267
      繼承的工作原理
    • 1-268
      覆寫方法
    • 1-269
      super() 函式
    • 1-270
      優先使用合成而不是繼承
    • 1-271
      繼承的缺點
    • 1-272
      isinstance() 和issubclass() 函式
    • 1-273
      類別方法
    • 1-274
      類別屬性
    • 1-275
      靜態方法
    • 1-276
      什麼時候使用類別和靜態物件導向功能?
    • 1-277
      物件導向的時髦術語
    • 1-278
      封裝
    • 1-279
      多型
    • 1-280
      何時不要使用繼承?
    • 1-281
      多重繼承
    • 1-282
      方法解析順序
    • 1-283
      總結
    • 1-284
      CH17 Pythonic 風格的OOPproperty與dunder 方法
    • 1-285
      Property
    • 1-286
      把某個屬性轉換成Property
    • 1-287
      使用setter 來驗證資料
    • 1-288
      唯讀Property
    • 1-289
      什麼時候使用Property?
    • 1-290
      Python 的dunder 方法
    • 1-291
      字串表示的dunder 方法
    • 1-292
      數值的dunder 方法
    • 1-293
      反映數值的dunder 方法
    • 1-294
      就地擴增指定的dunder 方法
    • 1-295
      比較的dunder 方法
    • 1-296
      總結
    • 1-297
      版權頁
    • 1-298
      封底頁

    試閱影片

    | 尚無內容

    常見問答

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

    猜你喜歡

    用戶評價

    | 收集中

    購買前問答

    | 尚無內容

    銷售方案