热搜关键词: matlab人工智能算法嵌入式雷达电机驱动

pdf

Effective Python(第二版)

  • 1星
  • 2023-04-02
  • 60.91MB
  • 需要2积分
  • 100+ 次下载
标签: python

python

本书可以帮你掌握真正的  Pythonic  编程方式,令你能够完全发挥出  Python  语言的强大功能,并写出健壮而高效的代码。Scott  Meyers  在畅销书《Effective  C++》中开创了一种以使用场景为主导的精练教学方式,本书作者  Brett  Slatkin  就以这种方式汇聚了  90  条实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。

Slatkin  根据自己在  Google  公司多年开发  Python  基础架构所积累的经验,揭示  Python  语言中一些鲜为人知的微妙特性,并给出了能够改善代码功能及运行效率的习惯用法。通过本书,你能够了解到解决关键编程任务所用的奇妙方式,并学会编写易于理解、便于维护且利于改进的代码。

本书赞誉

译者序

前言

致谢

第1章 培养Pythonic思维 //  1

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

第2条 遵循PEP  8风格指南 //  2

第3条 了解bytes与str的区别 //  5

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

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

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

第7条 尽量用enumerate取代range //  25

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

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

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

第2章 列表与字典 //  37

第11条 学会对序列做切片 //  37

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

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

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

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

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

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

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

第3章 函数 //  66

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

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

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

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

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

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

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

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

第4章 推导与生成 //  91

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

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

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

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

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

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

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

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

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

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

第5章 类与接口 //  122

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

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

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

第40条 通过super初始化超类 //  136

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

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

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

第6章 元类与属性 //  153

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

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

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

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

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

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

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

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

第7章 并发与并行 //  191

第52条 用subprocess管理子进程 //  192

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

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

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

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

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

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

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

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

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

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

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

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

第8章 稳定与性能 //  253

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

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

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

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

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

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

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

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

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

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

第9章 测试与调试 //  300

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

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

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

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

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

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

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

第10章 协作开发 //  329

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

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

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

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

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

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

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

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

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

展开预览

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

  • 比较实际的应用问题,大家谈所欲言
    相信大家基本都做过串口通讯的问题了吧,恩,我也做过了,感觉也还可以。。 不过今天想通过串口发送文件(电脑—开发板—电脑) 刚开始我就写了一个几个汉字的文本文档,理所当然,也能接收到其中的汉字 我定义的接收缓冲区是32位,所以当所发的文件字符长度大于32位,那么多余的就显示不了了。我也一个个数过了。。。 那么我想做文件传输的话该怎么设置呢? 不至于设置N位的缓冲区吧 大家帮忙分析分析
  • 求介绍几个适合初学者做的51单片机的小项目
    大家有没有适合初学者做的小项目,想从实践学习,缺什么补什么,我想要的是那种一堆原件,自己焊接的小项目,最好能够有些连接的原理图,毕竟是初学者,谢谢大家。
  • GSM手机的RF前端继续向高集成度方向发展
    随着前端模块(FEMs)到射频(RF)收发器模块相继投入使用,GSM手机RF前端的整合之路一直在持续发展。事实上,早在RF收发器采用直接转换或零中频(ZIF)架构(先消除中频段,随后消除IF声表面波滤波器)的时候,前端集成就已经开始了。随着收发器架构的演进,外部合成元件(即电压控制振荡器和锁相环)已经被直接集成在收发器的芯片中。高集成度实现了成本的降低以及电路板尺寸的减小。向高集成度发展的趋势没有
  • 大型工厂电视监控系统解决方案
    一、前言----随着经济水平和科学技术的飞速发展,人们对安全防范的要求越来越高,作为社会经济运行主体的企业更是首当其冲。近十几年来,随着改革开放的不断深入和新产品、新技术逐步引进,愈来愈多的设备先进、管理科学的现代企业崛起。新企业引入了新的安全防范的概念 既要能及时全面地掌握企业生产的现场动态,又要能减轻保安人员的工作量。通过对企业现场生产的自动化管理,实现对工厂厂区、厂房的视频监控及人员管理。这
  • 抄板专家
    抄板专家
  • 【转帖】一文读懂锂电池容量这个概念
  • 求一个输入300V输出30~400V的开关电源设计
  • windows ce 6.0 下编译网卡驱动找不到依靠库 ndis.lib
  • 基于matlab的DSP调试
  • 比较器

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×