中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

歡迎光臨中圖網(wǎng) 請 | 注冊
> >>
EFFECTIVE PYTHON:編寫好PYTHON的90個有效方法(第2版 英文版)

包郵 EFFECTIVE PYTHON:編寫好PYTHON的90個有效方法(第2版 英文版)

出版社:人民郵電出版社出版時間:2024-03-01
開本: 16開 頁數(shù): 434
中 圖 價:¥90.9(7.1折) 定價  ¥128.0 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>

EFFECTIVE PYTHON:編寫好PYTHON的90個有效方法(第2版 英文版) 版權信息

EFFECTIVE PYTHON:編寫好PYTHON的90個有效方法(第2版 英文版) 本書特色

Python編程進階一定要讀的書

Google的Principal Software Engineer——Brett latkin撰寫

基于Python3.8,新增31條建議

掌握Pythonic編程方式,寫出高質量代碼

進階到編程高手的程序員修煉之道和代碼整潔之道

EFFECTIVE PYTHON:編寫好PYTHON的90個有效方法(第2版 英文版) 內容簡介

本書是Effective Python的第2版,基于Python 3進行了全面升級。本書分為10章,包含90個條目,形式簡潔、表述明確。每個條目都基于對Python的獨到見解,告訴讀者如何高效地編寫Python程序。與第1版相比,第2版只關注Python 3,而不再兼顧 Python 2。根據(jù)Python語言引入的新特性,以及Python開發(fā)者所形成的新經(jīng)驗,對第1版中的某些思路與解決方案進行了修訂,以更好地發(fā)揮Python的優(yōu)勢。本書刪除了過時的知識點,并添加了對Python新特性的一些介紹。新版中增加了31個條目,并專門設立了幾章來強調列表和字典、推導和生成器、元類和屬性、穩(wěn)定性和性能,以及測試和調試 等重要主題。

EFFECTIVE PYTHON:編寫好PYTHON的90個有效方法(第2版 英文版) 目錄

目錄

Chapter 1 Pythonic Thinking / 第 1 章 Pythonic 思維 1

Item 1: Know Which Version of Python You’re Using /

條目 1:查詢自己使用的 Python 版本 1

Item 2: Follow the PEP 8 Style Guide /

條目 2:遵循 PEP 8 風格指南 2

Item 3: Know the Differences Between bytes and str /

條目 3:了解 bytes 和 str 之間的區(qū)別 5

Item 4: Prefer Interpolated F-Strings Over C-style Format Strings and str.format /

條目 4:使用支持插值的 f-string 取代 C 風格的格式化字符串和str.format 11

Item 5: Write Helper Functions Instead of Complex Expressions /

條目 5:使用輔助函數(shù)取代復雜表達式 21

Item 6: Prefer Multiple Assignment Unpacking Over Indexing /

條目 6:把數(shù)據(jù)結構直接拆分到多個變量里,避免通過下標訪問 24

Item 7: Prefer enumerate Over range /

條目 7:盡量用 enumerate 取代 range 28

Item 8: Use zip to Process Iterators in Parallel /

條目 8:使用 zip 并行處理迭代器 30

Item 9: Avoid else Blocks After for and while Loops /

條目 9:避免在 for 和 while 循環(huán)后使用 else 塊 32

Item 10: Prevent Repetition with Assignment Expressions /

條目 10:使用賦值表達式減少重復代碼 35

Chapter 2 Lists and Dictionaries / 第 2 章 列表和字典 43

Item 11: Know How to Slice Sequences /

條目 11:學會對序列做切片 43

Item 12: Avoid Striding and Slicing in a Single Expression /

條目 12:避免在切片里同時指定起止下標和步進 46

Item 13: Prefer Catch-All Unpacking Over Slicing /

條目 13:通過帶星號的 unpacking 操作來捕獲多個元素,避免用切片 48

Item 14: Sort by Complex Criteria Using the key Parameter /

條目 14:使用 sort 方法的 key 參數(shù)表示復雜的排序邏輯 52

Item 15: Be Cautious When Relying on dict Insertion Ordering /

條目 15:不要過分依賴給 dict 添加條目時所用的順序 58

Item 16: Prefer get Over in and KeyError to Handle Missing Dictionary Keys /

條目 16:使用 get 處理鍵不在字典中的情況,避免使用 in 與 KeyError 65

Item 17: Prefer defaultdict Over setdefault to Handle Missing Items in Internal State /

條目 17:使用 defaultdict 處理內部狀態(tài)中缺失的元素,而避免使用setdefault 70

Item 18: Know How to Construct Key-Dependent Default Values with __missing__ /

條目 18:學會使用__missing__構建依賴鍵的默認值 73

Chapter 3 Functions / 第 3 章 函數(shù) 77

Item 19: Never Unpack More Than Three Variables When Functions Retur Multiple Values /

條目 19:避免把函數(shù)返回的多個數(shù)值拆分到 3 個以上的變量中 77

Item 20: Prefer Raising Exceptions to Returning None /

條目 20:遇到意外狀況時應該拋出異常,而不是返回 None 80

Item 21: Know How Closures Interact with Variable Scope /

條目 21:了解如何在閉包里面使用外圍作用域中的變量 83

Item 22: Reduce Visual Noise with Variable Positional Arguments /

條目 22:使用數(shù)量可變的位置參數(shù)給函數(shù)設計清晰的參數(shù)列表 87

Item 23: Provide Optional Behavior with Keyword Arguments /

條目 23:使用關鍵字參數(shù)表示可選行為 90

Item 24: Use None and Docstrings to Specify Dynamic Default Arguments /

條目 24:使用 None 和文檔字符串描述默認值會變的參數(shù) 94

Item 25: Enforce Clarity with Keyword-Only and Positional-Only Arguments /

條目 25:使用只能以關鍵字指定和只能按位置傳入的參數(shù)來設計清晰的參數(shù)列表 97

Item 26: Define Function Decorators with functools.wraps /

條目 26:使用 functools.wraps 定義函數(shù)修飾器 102

Chapter 4 Comprehensions and Generators / 第 4 章 推導和生成器 107

Item 27: Use Comprehensions Instead of map and filter /

條目 27:使用推導取代 map 和 filter 107

Item 28: Avoid More Than Two Control Subexpressions in Comprehensions /

條目 28:在推導中避免超過兩個控制子表達式 109

Item 29: Avoid Repeated Work in Comprehensions by Using Assignment Expressions /

條目 29:使用賦值表達式在推導中避免重復代碼 111

Item 30: Consider Generators Instead of Returning Lists /

條目 30:考慮使用生成器而不是返回列表 114

Item 31: Be Defensive When Iterating Over Arguments /

條目 31:謹慎地迭代函數(shù)所收到的參數(shù) 117

Item 32: Consider Generator Expressions for Large List Comprehensions /

條目 32:考慮使用生成器表達式來進行大型列表推導的組合 122

Item 33: Compose Multiple Generators with yield from /

條目 33:使用 yield from 組合多個生成器 124

Item 34: Avoid Injecting Data into Generators with send /

條目 34:避免使用 send 向生成器注入數(shù)據(jù) 127

Item 35: Avoid Causing State Transitions in Generators with throw /

條目 35:避免通過 throw 變換生成器的狀態(tài) 133

Item 36: Consider itertools for Working with Iterators and Generators /

條目 36:考慮使用 itertools 處理迭代器和生成器 138

Chapter 5 Classes and Interfaces / 第 5 章 類和接口 145

Item 37: Compose Classes Instead of Nesting Many Levels of Built-in Types /

條目 37:使用組合起來的類來實現(xiàn)多層結構,避免用嵌套的內置類型 145

Item 38: Accept Functions Instead of Classes for Simple Interfaces /

條目 38:接受函數(shù)而不是類來實現(xiàn)簡單接口 152

Item 39: Use @classmethod Polymorphism to Construct Objects Generically /

條目 39:通過@classmethod 多態(tài)來構建同一體系中的各類對象 155

Item 40: Initialize Parent Classes with super /

條目 40:使用 super 初始化超類 160

Item 41: Consider Composing Functionality with Mix-in Classes /

條目 41:考慮使用混合類來組合功能 165

Item 42: Prefer Public Attributes Over Private Ones /

條目 42:優(yōu)先考慮使用共有屬性表示應受保護的數(shù)據(jù),避免使用私有屬性表示 170

Item 43: Inherit from collections.abc for Custom Container Types /

條目 43:使用 collections.abc 繼承自定義容器類型 175

Chapter 6 Metaclasses and Attributes / 第 6 章 元類和屬性 181

Item 44: Use Plain Attributes Instead of Setter and Getter Methods /

條目 44:使用純屬性而不是 setter 和 getter 方法 181

Item 45: Consider @property Instead of Refactoring Attributes /

條目 45:考慮使用@property 而不是重構屬性 186

Item 46: Use Descriptors for Reusable @property Methods /

條目 46:使用描述符來改寫需要復用的@property 方法 190

Item 47: Use __getattr__, __getattribute__, and __setattr__ for Lazy Attributes /

條目 47:使用__getattr__、__getattribute__和__setattr__處理惰性屬性 195

Item 48: Validate Subclasses with __init_subclass__ /

條目 48:使用__init_subclass__驗證子類 201

Item 49: Register Class Existence with __init_subclass__ /

條目 49:使用__init_subclass__記錄現(xiàn)有的子類 208

Item 50: Annotate Class Attributes with __set_name__ /

條目 50:使用__set_name__注釋類屬性 214

Item 51: Prefer Class Decorators Over Metaclasses for Composable Class Extensions /

條目 51:使用類修飾器而不是元類來實現(xiàn)可組合的類擴展 218

Chapter 7 Concurrency and Parallelism / 第 7 章 并發(fā)和并行 225

Item 52: Use subprocess to Manage Child Processes /

條目 52:使用 subprocess 管理子進程 226

Item 53: Use Threads for Blocking I/O, Avoid for Parallelism /

條目 53:使用線程處理阻塞 I/O,但避免使用它做并行計算 230

Item 54: Use Lock to Prevent Data Races in Threads /

條目 54:使用 Lock 避免線程中的數(shù)據(jù)競爭 235

Item 55: Use Queue to Coordinate Work Between Threads /

條目 55:使用 Queue 協(xié)調線程間的工作 238

Item 56: Know How to Recognize When Concurrency Is Necessary /

條目 56:學會判斷何時需要并發(fā) 248

Item 57: Avoid Creating New Thread Instances for On-demand Fan-out /

條目 57:避免為按需分發(fā)創(chuàng)建新的 Thread 實例 252

Item 58: Understand How Using Queue for Concurrency Requires Refactoring /

條目 58:學會正確地重構代碼,以便用 Queue 做并發(fā) 257

Item 59: Consider ThreadPoolExecutor When Threads Are Necessary for Concurrency /

條目 59:在需要并發(fā)時考慮 ThreadPoolExecutor 264

Item 60: Achieve Highly Concurrent I/O with Coroutines /

條目 60:使用協(xié)程實現(xiàn)高并發(fā) I/O 266

Item 61: Know How to Port Threaded I/O to asyncio /

條目 61:了解如何將基于線程的 I/O 移植到 asyncio 271

Item 62: Mix Threads and Coroutines to Ease the Transition to asyncio /

條目 62:混合使用線程和協(xié)程以便過渡到 asyncio 282

Item 63: Avoid Blocking the asyncio Event Loop to Maximize Responsiveness /

條目 63:避免阻塞 asyncio 事件循環(huán)以*大化程序的響應能力 289

Item 64: Consider concurrent.futures for True Parallelism /

條目 64:考慮 concurrent.futures 以實現(xiàn)真正的并行計算 292

Chapter 8 Robustness and Performance / 第 8 章 穩(wěn)定性和性能 299

Item 65: Take Advantage of Each Block in try/except/else/finally /

條目 65:充分利用 try/except/else/finally 結構中的每個代碼塊 299

Item 66: Consider contextlib and with Statements for Reusable try/finally Behavior /

條目 66:考慮使用 contextlib 和 with 語句來改寫可復用的 try/finally 代碼 304

Item 67: Use datetime Instead of time for Local Clocks /

條目 67:使用 datetime 模塊而不是 time 模塊處理本地時間 308

Item 68: Make pickle Reliable with copyreg /

條目 68:使用 copyreg 實現(xiàn)可靠的 pickle 操作 312

Item 69: Use decimal When Precision Is Paramount /

條目 69:在需要準確計算時使用 decimal 表示相應的數(shù)值 319

Item 70: Profile Before Optimizing /

條目 70:在優(yōu)化之前進行性能分析 322

Item 71: Prefer deque for Producer ?C Consumer Queues /

條目 71:優(yōu)先考慮使用 deque 實現(xiàn)生產(chǎn)者-消費者隊列 326

Item 72: Consider Searching Sorted Sequences with bisect /

條目 72:考慮使用 bisect 搜索排序序列 334

Item 73: Know How to Use heapq for Priority Queues /

條目 73:學會使用 heapq 制作優(yōu)先級隊列 336

Item 74: Consider memoryview and bytearray for Zero-Copy Interactions with bytes /

條目 74:考慮使用 memoryview 和 bytearray 來實現(xiàn)無須拷貝的 bytes 操作 346

Chapter 9 Testing and Debugging / 第 9 章 測試和調試 353

Item 75: Use repr Strings for Debugging Output /

條目 75:使用 repr 字符串輸出調試信息 354

Item 76: Verify Related Behaviors in TestCase Subclasses /

條目 76:通過 TestCase 子類驗證相關行為 357

Item 77: Isolate Tests from Each Other with setUp, tearDown, setUpModule, and tearDownModule /

條目 77:使用 setUp、tearDown、setUpModule 和tearDownModule 將測試隔離開 365

Item 78: Use Mocks to Test Code with Complex Dependencies /

條目 78:使用 Mock 來模擬受測代碼所依賴的復雜函數(shù) 367

Item 79: Encapsulate Dependencies to Facilitate Mocking and Testing /

條目 79:封裝依賴關系以便于模擬和測試 375

Item 80: Consider Interactive Debugging with pdb /

條目 80:考慮使用 pdb 進行交互式調試 379

Item 81: Use tracemalloc to Understand Memory Usage and Leaks /

條目 81:使用 tracemalloc 了解內存使用和泄漏情況 384

Chapter 10 Collaboration / 第 10 章 協(xié)作開發(fā) 389

Item 82: Know Where to Find Community-Built Modules /

條目 82:學會尋找由其他 Python 開發(fā)者所構建的模塊 389

Item 83: Use Virtual Environments for Isolated and Reproducible Dependencies /

條目 83:使用虛擬環(huán)境隔離環(huán)境,并重建依賴關系 390

Item 84: Write Docstrings for Every Function, Class, and Module /

條目 84:為每個函數(shù)、類和模塊編寫文檔字符串 396

Item 85: Use Packages to Organize Modules and Provide Stable APIs /

條目 85:使用包來組織模塊并提供穩(wěn)定的 API 401

Item 86: Consider Module-Scoped Code to Configure Deployment Environments /

條目 86:考慮使用模塊級別的代碼來配置不同的部署環(huán)境 406

Item 87: Define a Root Exception to Insulate Callers from APIs /

條目 87:使用根異常來隔離調用者與 API 408

Item 88: Know How to Break Circular Dependencies /

條目 88:了解如何打破循環(huán)依賴關系 413

Item 89: Consider warnings to Refactor and Migrate Usage /

條目 89:考慮使用 warnings 來重構和遷移用法 418

Item 90: Consider Static Analysis via typing to Obviate Bugs /

條目 90:考慮使用 typing 做靜態(tài)分析來消除錯誤 425
展開全部

EFFECTIVE PYTHON:編寫好PYTHON的90個有效方法(第2版 英文版) 作者簡介

[美]布雷特·斯拉特金(Breut Slatkin)是Google的Principal Software Engineer,Google Surveys的聯(lián)合技術創(chuàng)辦人,也是PubSubHubbub協(xié)議的共同創(chuàng)造者之一。此外,Slatkin還發(fā)布了Google的一個云計算產(chǎn)品--AppEngime。早在2006年,Slatkin 就開始使用Python來管理Google 龐大的服務器群。他擁有紐約哥倫比亞大學計算機工程學士學位。

商品評論(0條)
暫無評論……
書友推薦
編輯推薦
返回頂部
中圖網(wǎng)
在線客服
主站蜘蛛池模板: 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 伺服电机维修、驱动器维修「安川|三菱|松下」伺服维修公司-深圳华创益 | 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 广州网站建设_小程序开发_番禺网站建设_佛山网站建设_粤联网络 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 瓶盖扭矩测试仪-瓶盖扭力仪-全自动扭矩仪-济南三泉中石单品站 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 焊锡,锡膏,锡线,锡条,焊锡膏-绿志岛金属有限公司 | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 深圳诚暄fpc首页-柔性线路板,fpc柔性线路板打样生产厂家 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 至顶网 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 耐破强度测试仪-纸箱破裂强度试验机-济南三泉中石单品站 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 软文世界-软文推广-软文营销-新闻稿发布-一站式软文自助发稿平台 | 紫外线老化试验箱_uv紫外线老化试验箱价格|型号|厂家-正航仪器设备 | 河南中专学校|职高|技校招生-河南中职中专网 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 广东教师资格网-广东教师资格证考试网 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 铸铁平台,大理石平台专业生产厂家_河北-北重机械 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 免费B2B信息推广发布平台 - 推发网 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 |