万本电子书0元读

万本电子书0元读

顶部广告

Effective Python:编写高质量Python代码的90个有效方法(原书第2版)电子书

●Python门容易,阶难!所有不想永远停留在Python门阶段的程序员:都应该尽早阅读本书。 ●本书可以帮你掌握真正的Pythonic编程方式,令你能够完全发挥出Python语言的强大功能,并写出健壮而高效的代码。Scott Meyers在畅销书Effective C 中创了一种以使用场景为主导的精练教学方式,本书作者Brett Slatkin就以这种方式汇聚了90条实践原则、发技巧和便捷方案,并以实用的代码范例来解释它们。

售       价:¥

纸质售价:¥86.40购买纸书

241人正在读 | 0人评论 7.5

作       者:(美)布雷特·斯拉特金(Brett Slatkin)

出  版  社:机械工业出版社

出版时间:2021-01-01

字       数:20.8万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书能够帮你掌握真正的 Pythonic 编程方式,充分发挥 Python 的优势,写出健壮而高效的代码。Scott Meyers在其名著Effective C 中创了一种用简明的场景实例来讲述编程经验的方式,本书作者Brett Slatkin也沿用这种方式,向大家讲解 Python 的编程原则、发技巧与便捷方案,形成 90 条建议并配有实用的范例代码,以便大家能够扎实地掌握 Python 语言。 本书的关键内容包括: ● 31 条新的实用建议,这些建议涵盖 Python 发的几个主要方面。 ● 对各种语句、表达式与内置类型做了详细讲解与演示。 ● 怎样写出意图清晰、便于复用而且不容易出现 bug 的函数。 ● 怎样更好地使用推导机制与生成器函数。 ● 怎样用类与口准确展示相关的行为。 ● 怎样避元类与动态属性中的一些陷阱。 ● 怎样用更高效且更清晰的方法写出并发与并行程序。 ● 怎样优化程序性能并提升代码质量。 ● 用于改调试与测试工作的技术与内置模块。 ● 与协作发有关的工具和经验。<br/>【推荐语】<br/>●Python门容易,阶难!所有不想永远停留在Python门阶段的程序员:都应该尽早阅读本书。 ●本书可以帮你掌握真正的Pythonic编程方式,令你能够完全发挥出Python语言的强大功能,并写出健壮而高效的代码。Scott Meyers在畅销书Effective C 中创了一种以使用场景为主导的精练教学方式,本书作者Brett Slatkin就以这种方式汇聚了90条实践原则、发技巧和便捷方案,并以实用的代码范例来解释它们。 ●Slatkin根据自己在Google公司多年发Python基础架构所积累的经验,揭示Python语言中一些鲜为人知的微妙特性,并给出了能够改善代码功能及运行效率的习惯用法。通过本书,你能够了解到解决关键编程任务所用的奇妙方式,并学会编写易于理解、便于维护且利于改的代码。 ●适读人群:本书适合Python发者以及对Python编程感兴趣的读者 ;以及对Python有初步了解的编程新手和有经验的程序员。如您毫无编程经验,建议您先阅读《Python学习手册(原书第5版)》。<br/>【作者】<br/>Brett Slatkin是Google首席软件工程师,他是Google Surveys的联合技术创始人,也是PubSubHubbub协议的共同创造者之一。此外,Slatkin还发布了Google的个云计算产品——App Engine。早在15年前,Slatkin就始在工作中使用Python管理Google大量的服务器群。他拥有纽约哥伦比亚大学计算机工程专业学士学位。<br/>
目录展开

本书赞誉

译者序

前言

致谢

第1章培养Pythonic思维

第1条查询自己使用的Python版本

第2条遵循PEP 8风格指南

第3条了解bytes与str的区别

第4条用支持插值的f-string取代C风格的格式字符串与str.format方法

第5条用辅助函数取代复杂的表达式

第6条把数据结构直接拆分到多个变量里,不要专门通过下标访问

第7条尽量用enumerate取代range

第8条用zip函数同时遍历两个迭代器

第9条不要在for与while循环后面写else块

第10条用赋值表达式减少重复代码

第2章列表与字典

第11条学会对序列做切片

第12条不要在切片里同时指定起止下标与步进

第13条通过带星号的unpacking操作来捕获多个元素,不要用切片

第14条用sort方法的key参数来表示复杂的排序逻辑

第15条不要过分依赖给字典添加条目时所用的顺序

第16条用get处理键不在字典中的情况,不要使用in与KeyError

第17条用defaultdict处理内部状态中缺失的元素,而不要用setdefault

第18条学会利用__missing__构造依赖键的默认值

第3章函数

第19条不要把函数返回的多个数值拆分到三个以上的变量中

第20条遇到意外状况时应该抛出异常,不要返回None

第21条了解如何在闭包里面使用外围作用域中的变量

第22条用数量可变的位置参数给函数设计清晰的参数列表

第23条用关键字参数来表示可选的行为

第24条用None和docstring来描述默认值会变的参数

第25条用只能以关键字指定和只能按位置传入的参数来设计清晰的参数列表

第26条用functools.wraps定义函数修饰器

第4章推导与生成

第27条用列表推导取代map与filter

第28条控制推导逻辑的子表达式不要超过两个

第29条用赋值表达式消除推导中的重复代码

第30条不要让函数直接返回列表,应该让它逐个生成列表里的值

第31条谨慎地迭代函数所收到的参数

第32条考虑用生成器表达式改写数据量较大的列表推导

第33条通过yield from把多个生成器连起来用

第34条不要用send给生成器注入数据

第35条不要通过throw变换生成器的状态

第36条考虑用itertools拼装迭代器与生成器

第5章类与接口

第37条用组合起来的类来实现多层结构,不要用嵌套的内置类型

第38条让简单的接口接受函数,而不是类的实例

第39条通过@classmethod多态来构造同一体系中的各类对象

第40条通过super初始化超类

第41条考虑用mix-in类来表示可组合的功能

第42条优先考虑用public属性表示应受保护的数据,不要用private属性表示

第43条自定义的容器类型应该从collections.abc继承

第6章元类与属性

第44条用纯属性与修饰器取代旧式的setter与getter方法

第45条考虑用@property实现新的属性访问逻辑,不要急着重构原有的代码

第46条用描述符来改写需要复用的@property方法

第47条针对惰性属性使用__getattr__、__getattribute__及__setattr__

第48条用__init_subclass__验证子类写得是否正确

第49条用__init_subclass__记录现有的子类

第50条用__set_name__给类属性加注解

第51条优先考虑通过类修饰器来提供可组合的扩充功能,不要使用元类

第7章并发与并行

第52条用subprocess管理子进程

第53条可以用线程执行阻塞式I/O,但不要用它做并行计算

第54条利用Lock防止多个线程争用同一份数据

第55条用Queue来协调各线程之间的工作进度

第56条学会判断什么场合必须做并发

第57条不要在每次fan-out时都新建一批Thread实例

第58条学会正确地重构代码,以便用Queue做并发

第59条如果必须用线程做并发,那就考虑通过ThreadPoolExecutor实现

第60条用协程实现高并发的I/O

第61条学会用asyncio改写那些通过线程实现的I/O

第62条结合线程与协程,将代码顺利迁移到asyncio

第63条让asyncio的事件循环保持畅通,以便进一步提升程序的响应能力

第64条考虑用concurrent.futures实现真正的并行计算

第8章稳定与性能

第65条合理利用try/except/else/finally结构中的每个代码块

第66条考虑用contextlib和with语句来改写可复用的try/finally代码

第67条用datetime模块处理本地时间,不要用time模块

第68条用copyreg实现可靠的pickle操作

第69条在需要准确计算的场合,用decimal表示相应的数值

第70条先分析性能,然后再优化

第71条优先考虑用deque实现生产者-消费者队列

第72条考虑用bisect搜索已排序的序列

第73条学会使用heapq制作优先级队列

第74条考虑用memoryview与bytearray来实现无须拷贝的bytes操作

第9章测试与调试

第75条通过repr字符串输出调试信息

第76条在TestCase子类里验证相关的行为

第77条把测试前、后的准备与清理逻辑写在setUp、tearDown、setUp-Module与tearDownModule中,以防用例之间互相干扰

第78条用Mock来模拟受测代码所依赖的复杂函数

第79条把受测代码所依赖的系统封装起来,以便于模拟和测试

第80条考虑用pdb做交互调试

第81条用tracemalloc来掌握内存的使用与泄漏情况

第10章协作开发

第82条学会寻找由其他Python开发者所构建的模块

第83条用虚拟环境隔离项目,并重建依赖关系

第84条每一个函数、类与模块都要写docstring

第85条用包来安排模块,以提供稳固的API

第86条考虑用模块级别的代码配置不同的部署环境

第87条为自编的模块定义根异常,让调用者能够专门处理与此API有关的异常

第88条用适当的方式打破循环依赖关系

第89条重构时考虑通过warnings提醒开发者API已经发生变化

第90条考虑通过typing做静态分析,以消除bug

累计评论(0条) 1个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部