猜你喜欢
Python工匠

Python工匠

书籍作者:朱雷 ISBN:9787115584045
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3541
创建日期:2022-11-29 发布日期:2022-11-29
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
下载地址
内容简介

本书基于广受好评的“Python工匠”系列开源文章。全书从工程实践角度出发,通过剖析核心知识、展示典型案例与总结实用技巧,帮助大家系统进阶Python,写好工程代码,做好实践项目。


本书共计13章,分为五大部分:变量与基础类型、语法结构、函数与装饰器、面向对象编程、总结与延伸,涵盖Python编程的方方面面。本书的写作方式别具一格,核心知识点都会通过三大板块来阐述:基础知识、案例故事、编程建议。其中基础知识帮助大家快速回顾Python基础;案例故事由作者经历的编程项目与案例改编而来,兼具实战性与趣味性;编程建议以大家喜闻乐见的条目式知识点呈现,短小精悍,可直接应用于自己的编程实践中。

作者简介

朱雷(@piglei)


就职于腾讯IEG技术运营部,现任蓝鲸工具PaaS平台负责人,参与和主导了包括“蓝鲸工具PaaS平台”在内的诸多大型项目,从事后端开发与架构设计十余年,曾就职于搜狐、赶集网。


精通Python语言特性,对如何开发高质量的大型Python工程有独到见解。 从2016年开始创作“Python工匠”系列开源技术文章,其GitHub Star数超过4K,被“腾讯技术工程”等多家媒体全系列转载,收获诸多好评。


GitHub账号:piglei。公众号:piglei。

编辑推荐
适读人群 :本书适合以下人群阅读: 以Python为主要开发语言的工程师; 工作中需要写一些Python代码的工程师; 有其他语言编程经验、想学习如何写出地道Python代码的工程师; 任何爱好编程、喜欢Python语言的读者。

1.专业:基于GitHub人气开源文章“Python工匠”系列,基于Python 3.8,广受读者喜爱。


2.稀缺:源自本土一线项目案例,融入互联网大厂工程实践经验。


3.专注:聚焦真实项目中高频使用的Python编程核心知识点。


4.实用:14个项目案例,60多个编程技巧与建议,立等可用,提供源代码下载。


《Python工匠》电子书免费下载

pdf下载 txt下载 epub下载 mobi下载 azw3下载

目录

前言 v


第 1章 变量与注释 1


1.1 基础知识 2


1.1.1 变量常见用法 2


1.1.2 给变量注明类型 4


1.1.3 变量命名原则 6


1.1.4 注释基础知识 11


1.2 案例故事 14


奇怪的冒泡排序算法 15


1.3 编程建议 17


1.3.1 保持变量的一致性 18


1.3.2 变量定义尽量靠近使用 18


1.3.3 定义临时变量提升可读性 20


1.3.4 同一作用域内不要有太多变量 21


1.3.5 能不定义变量就别定义 22


1.3.6 不要使用locals() 23


1.3.7 空行也是一种“注释” 24


1.3.8 先写注释,后写代码 25


1.4 总结 26


第 2章 数值与字符串 28


2.1 基础知识 29


2.1.1 数值基础 29


2.1.2 布尔值其实也是数字 31


2.1.3 字符串常用操作 31


2.1.4 不常用但特别好用的字符串方法 34


2.1.5 字符串与字节串 36


2.2 案例故事 39


2.2.1 代码里的“密码” 39


2.2.2 别轻易成为SQL语句“大师” 41


2.3 编程建议 44


2.3.1 不必预计算字面量表达式 44


2.3.2 使用特殊数字:“无穷大” 46


2.3.3 改善超长字符串的可读性 47


2.3.4 别忘了以r开头的字符串内置方法 48


2.3.5 不要害怕字符串拼接 49


2.4 总结 50


第3章 容器类型 53


3.1 基础知识 54


3.1.1 列表常用操作 54


3.1.2 理解列表的可变性 56


3.1.3 常用元组操作 60


3.1.4 具名元组 61


3.1.5 字典常用操作 63


3.1.6 认识字典的有序性与无序性 66


3.1.7 集合常用操作 68


3.1.8 了解对象的可哈希性 71


3.1.9 深拷贝与浅拷贝 72


3.2 案例故事 74


分析网站访问日志 75


3.3 编程建议 83


3.3.1 用按需返回替代容器 83


3.3.2 了解容器的底层实现 86


3.3.3 掌握如何快速合并字典 89


3.3.4 使用有序字典去重 91


3.3.5 别在遍历列表时同步修改 92


3.3.6 编写推导式的两个“不要” 92


3.3.7 让函数返回NamedTuple 94


3.4 总结 95


第4章 条件分支控制流 97


4.1 基础知识 98


4.1.1 分支惯用写法 98


4.1.2 修改对象的布尔值 101


4.1.3 与None比较时使用is运算符 103


4.2 案例故事 105


消失的分支 105


4.3 编程建议 112


4.3.1 尽量避免多层分支嵌套 112


4.3.2 别写太复杂的条件表达式 114


4.3.3 尽量降低分支内代码的相似性 115


4.3.4 使用“德摩根定律” 116


4.3.5 使用all()/any()函数构建条件表达式 117


4.3.6 留意and和or的运算优先级 118


4.3.7 避开or运算符的陷阱 118


4.4 总结 119


第5章 异常与错误处理 121


5.1 基础知识 122


5.1.1 优先使用异常捕获 122


5.1.2 try语句常用知识 124


5.1.3 抛出异常,而不是返回错误 127


5.1.4 使用上下文管理器 129


5.2 案例故事 133


5.2.1 提前崩溃也挺好 133


5.2.2 异常与抽象一致性 136


5.3 编程建议 139


5.3.1 不要随意忽略异常 139


5.3.2 不要手动做数据校验 140


5.3.3 抛出可区分的异常 142


5.3.4 不要使用assert来检查参数合法性 144


5.3.5 无须处理是最好的错误处理 145


5.4 总结 149


第6章 循环与可迭代对象 151


6.1 基础知识 152


6.1.1 迭代器与可迭代对象 152


6.1.2 修饰可迭代对象优化循环 158


6.1.3 使用itertools模块优化循环 160


6.1.4 循环语句的else关键字 162


6.2 案例故事 164


数字统计任务 164


6.3 编程建议 168


6.3.1 中断嵌套循环的正确方式 168


6.3.2 巧用next()函数 170


6.3.3 当心已被耗尽的迭代器 171


6.4 总结 172


第7章 函数 174


7.1 基础知识 175


7.1.1 函数参数的常用技巧 175


7.1.2 函数返回的常见模式 179


7.1.3 常用函数模块:functools 184


7.2 案例故事 187


函数与状态 187


7.3 编程建议 194


7.3.1 别写太复杂的函数 194


7.3.2 一个函数只包含一层抽象 196


7.3.3 优先使用列表推导式 203


7.3.4 你没有那么需要lambda 204


7.3.5 了解递归的局限性 205


7.4 总结 207


第8章 装饰器 209


8.1 基础知识 211


8.1.1 装饰器基础 211


8.1.2 使用functools.wraps()修饰包装函数 213


8.1.3 实现可选参数装饰器 215


8.1.4 用类来实现装饰器(函数替换) 217


8.1.5 用类来实现装饰器(实例替换) 219


8.1.6 使用wrapt模块助力装饰器编写 221


8.2 编程建议 223


8.2.1 了解装饰器的本质优势 223


8.2.2 使用类装饰器替代元类 225


8.2.3 别弄混装饰器和装饰器模式 226


8.2.4 浅装饰器,深实现 227


8.3 总结 228


第9章 面向对象编程 230


9.1 基础知识 232


9.1.1 类常用知识 232


9.1.2 内置类方法装饰器 235


9.1.3 鸭子类型及其局限性 239


9.1.4 抽象类 242


9.1.5 多重继承与MRO 248


9.1.6 其他知识 251


9.2 案例故事 255


继承是把双刃剑 255


9.3 编程建议 265


9.3.1 使用__init_subclass__替代元类 265


9.3.2 在分支中寻找多态的应用时机 266


9.3.3 有序组织你的类方法 268


9.3.4 函数搭配,干活不累 270


9.4 总结 274


第 10章 面向对象设计原则(上) 276


10.1 类型注解基础 278


10.2 SRP:单一职责原则 279


10.2.1 案例:一个简单的Hacker News爬虫 280


10.2.2 违反SRP的坏处 283


10.2.3 大类拆小类 284


10.3 OCP:开放-关闭原则 285


10.3.1 接受OCP的考验 286


10.3.2 通过继承改造代码 288


10.3.3 使用组合与依赖注入 289


10.3.4 使用数据驱动 292


10.4 总结 294


第 11章 面向对象设计原则(下) 295


11.1 LSP:里式替换原则 296


11.1.1 子类随意抛出异常 296


11.1.2 子类随意调整方法参数与返回值 300


11.1.3 基于隐式合约违反LSP 304


11.1.4 LSP小结 306


11.2 DIP:依赖倒置原则 306


11.2.1 案例:按来源统计Hacker News条目数量 307


11.2.2 为脚本编写单元测试 309


11.2.3 实现DIP 311


11.2.4 倒置后的单元测试 314


11.2.5 DIP小结 315


11.3 ISP:接口隔离原则 317


11.3.1 案例:处理页面归档需求 317


11.3.2 修改实体类 318


11.3.3 违反ISP 320


11.3.4 分拆接口 320


11.3.5 其他违反ISP的场景 322


11.4 总结 322


第 12章 数据模型与描述符 324


12.1 基础知识 326


12.1.1 字符串魔法方法 326


12.1.2 比较运算符重载 329


12.1.3 描述符 332


12.2 案例故事 341


处理旅游数据的三种方案 341


12.3 编程建议 350


12.3.1 认识__hash__的危险性 350


12.3.2 数据模型不是“躺赢”之道 351


12.3.3 不要依赖__del__方法 353


12.4 总结 354


第 13章 开发大型项目 356


13.1 常用工具介绍 357


13.1.1 flake8 357


13.1.2 isort 360


13.1.3 black 361


13.1.4 pre-commit 364


13.1.5 mypy 365


13.2 单元测试简介 366


13.2.1 unittest 367


13.2.2 pytest 369


13.3 有关单元测试的建议 375


13.3.1 写单元测试不是浪费时间 375


13.3.2 不要总想着“补”测试 377


13.3.3 难测试的代码就是烂代码 378


13.3.4 像应用代码一样对待测试代码 379


13.3.5 避免教条主义 380


13.4 总结 381


结语 383


标签
计算机,CS
产品特色