《Effective Python》pdf简介:

用Python编写程序,是相当容易的,所以这门语言非常流行。但若想掌握Python所特有的优势、魅力和表达能力,则相当困难,而且语言中还有很多隐藏的陷阱,容易令开发者犯错。

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

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

本书核心内容包括:

涵盖Python 3.x及Python 2.x主要应用领域的实用指南,以及与之配套的详细解释及代码范例。

与函数相关的编程建议,这些建议有助于我们写出意图清晰、便于复用且缺陷较少的函数。

如何准确地表达类与对象的行为。

在使用元类和动态属性时,如何避免错误的用法。

更为高效的并发及并行方式。

与Python内置模块相关的编程技巧和习惯用法。

多人协作时所用的开发工具和最佳实践方式。

旨在改善代码质量和程序性能的调试、测试与优化方案。

前言

致谢

第1章 用Pythonic方式来思考 1

第1条:确认自己所用的Python版本 1

第2条:遵循PEP 8风格指南 3

第3条:了解bytes、str与unicode的区别 5

第4条:用辅助函数来取代复杂的表达式 8

第5条:了解切割序列的办法 10

第6条:在单次切片操作内,不要同时指定start、end和stride 13

第7条:用列表推导来取代map和filter 15

第8条:不要使用含有两个以上表达式的列表推导 16

第9条:用生成器表达式来改写数据量较大的列表推导 18

第10条:尽量用enumerate取代range 20

第11条:用zip函数同时遍历两个迭代器 21

第12条:不要在for和while循环后面写else块 23

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

第2章 函数 28

第14条:尽量用异常来表示特殊情况,而不要返回None 28

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

第16条:考虑用生成器来改写直接返回列表的函数 35

第17条:在参数上面迭代时,要多加小心 37

第18条:用数量可变的位置参数减少视觉杂讯 41

第19条:用关键字参数来表达可选的行为 43

第20条:用None和文档字符串来描述具有动态默认值的参数 46

第21条:用只能以关键字形式指定的参数来确保代码明晰 49

第3章 类与继承 53

第22条:尽量用辅助类来维护程序的状态,而不要用字典和元组 53

第23条:简单的接口应该接受函数,而不是类的实例 58

第24条:以@classmethod形式的多态去通用地构建对象 62

第25条:用super初始化父类 67

第26条:只在使用Mix-in组件制作工具类时进行多重继承 71

第27条:多用public属性,少用private属性 75

第28条:继承collections.abc以实现自定义的容器类型 79

第4章 元类及属性 84

第29条:用纯属性取代get和set方法 84

第30条:考虑用@property来代替属性重构 88

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

第32条:用__getattr__、__getattribute__和__setattr__实现按需生成的属性 97

第33条:用元类来验证子类 102

第34条:用元类来注册子类 104

第35条:用元类来注解类的属性 108

第5章 并发及并行 112

第36条:用subprocess模块来管理子进程 113

第37条:可以用线程来执行阻塞式I/O,但不要用它做平行计算 117

第38条:在线程中使用Lock来防止数据竞争 121

第39条:用Queue来协调各线程之间的工作 124

第40条:考虑用协程来并发地运行多个函数 131

第41条:考虑用concurrent.futures来实现真正的平行计算 141

第6章 内置模块 145

第42条:用functools.wraps定义函数修饰器 145

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

第44条:用copyreg实现可靠的pickle操作 151

第45条:应该用datetime模块来处理本地时间,而不是用time模块 157

第46条:使用内置算法与数据结构 161

第47条:在重视精确度的场合,应该使用decimal 166

第48条:学会安装由Python开发者社区所构建的模块 168

第7章 协作开发 170

第49条:为每个函数、类和模块编写文档字符串 170

第50条:用包来安排模块,并提供稳固的API 174

第51条:为自编的模块定义根异常,以便将调用者与API相隔离 179

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

第53条:用虚拟环境隔离项目,并重建其依赖关系 187

第8章 部署 193

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

第55条:通过repr字符串来输出调试信息 195

第56条:用unittest来测试全部代码 198

第57条:考虑用pdb实现交互调试 201

第58条:先分析性能,然后再优化 203

第59条:用tracemalloc来掌握内存的使用及泄漏情况 208

effective python pdf下载-《Effective Python》电子书pdf下载百度网盘相关推荐

  1. gradle全集 下载 蓝凑云(非百度网盘)

    gradle全集 下载 蓝凑云(非百度网盘)更新中 1.gradle下载太慢(用阿里云镜像仓库) 2.设置代理 3.在文章中下载替换更新 1.gradle下载太慢(用阿里云镜像仓库) 地址:https ...

  2. python 百度网盘下载提速_教你如何百度网盘的提高下载速度?

    没开会员的百度网盘,下载速度如何才能提高? 我来教你 百度网盘早已是名副其实的国民级网盘APP,虽然饱受诟病,但却依旧强大,你想过为什么吗? 今天,我不小心发现了它的一个秘密,分享给大家 以前我的网盘 ...

  3. Linux 通过命令行下载、上传文件到百度网盘(bypy)

    文章目录 安装配置 上传文件 下载文件 其他用法 使用的工具是bypy,github项目地址:https://github.com/houtianze/bypy 安装配置 首先安装bypy: pip3 ...

  4. redis windows版下载教程,及双系统百度网盘资源分享

    1.redis windows版本下载链接 (注意:3.2.100已经是redis windows最新版) https://github.com/microsoftarchive/redis/rele ...

  5. 抢度盘饭碗?阿里云网盘来了!最高6TB、非会员下载10mb/s!能否动摇百度网盘的地位?...

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 They always say time changes things bu ...

  6. python 全套教程视频 传智博客 百度网盘

    http://pan.baidu.com/s/1kVgfsBP 密码:7h5e (请给我评论,叫我雷锋)

  7. catia v5r25 百度网盘_CATIA v5R21软件下载(sp0,p2及p3版)百度网盘

    简介: CATIA V5R20继续在所有领域和产业里向客户提供生产支持并提高产品质量. 如今汽车A级曲面分割功能被整合在V5当中: ICEM Shape Design(造型设计)产品采用以CATIA ...

  8. xshell中文免费下载及安装(内附百度网盘下载链接,仅供于个人学习使用)

    1.Xshell 6的下载安装教程详解 链接地址: https://blog.csdn.net/weixin_41238134/article/details/90139769

  9. ehvierwer登录与不登录_【更新】亿寻—免登录不限速下载百度网盘

    本资源为小七七七七精心整理,仅供有需要的朋友们领取使用.公众号还有其他资源,如有侵权请在后台联系我们  下方资源领取 扫码添加 小七七七七 回复「064」获得免费资源 发现还是有很多人在找百度不限速的 ...

  10. 在Linux环境下通过百度网盘下载并安装matlab2017a

    前言 百度网盘下载matlab2017a安装包 方式1:安装百度网盘的python程序bypy 方式2:直接在浏览器下载 安装matlab 备注 参考链接 前言 最近参加一个比赛,需要在官方公布的li ...

最新文章

  1. 新近爆出的runC容器逃逸漏洞,用户如何面对?
  2. 计算机操作业务知识题库,《计算机操作基础知识题库》.doc
  3. springboot访问静态页面404_解决 springboot 2.x 访问静态资源 404的问题
  4. 2009年9月三级网络技术考前预测_填空题部分
  5. MySQL中的时间函数用法集合
  6. 机器学习是什么——周志华
  7. android 左滑按钮,android开发类似微信列表向左滑动按钮操作
  8. 1-7:学习shell之透过shell看世界
  9. 13.相机和图像——聚焦于对象实战,不断变化的焦距,景深_3
  10. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十三)
  11. 计算机处理问题的数学模型分为哪两类,数据模型与决策习题与参考答案
  12. 医疗行业缩写所表示含义
  13. 理财学习03-基金类别
  14. 全球及中国增强现实(AR)远程协助软件行业研究及十四五规划分析报告
  15. 帝国CMS系统自动生成sitemap.xml网站地图的教程
  16. Hive分组 条件 分区排序 CLUSTER BY, Sort By,DISTRIBUTE BY
  17. qt webview 忽略 ssl错误 ignoreSslErrors
  18. 《刻意练习》--读后感1
  19. pandas学习之concat合并及读写CSV文件
  20. 修改html文件500错误信息,打开网页提示 HTTP500错误的终极解决方法

热门文章

  1. DevC++和ege19.01版本图形库的配置安装
  2. 土地日度交易数据2000-2022
  3. 多线程爬取中国土地市场网土地交易数据,最新2020/08/21
  4. 从不跑步到无间断跑步1年感受
  5. 计算机软件时间,时间校对软件
  6. Labview_QMH模板解析
  7. java山地车可以改装吗_怎么样可以把山地车改的更简单一点?
  8. easyScholar简介
  9. 聊聊深度学习这档子事(3):寻找万能的通用模型
  10. Day54.XML解析(DOM4J)、Tomcat服务器、HTML协议简介: 请求、响应报文、响应码