|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Python 周报 #9 | 2020-06-28" |
| 4 | +permalink: /9 |
| 5 | +--- |
| 6 | + |
| 7 | +Python 周报,提供有价值的 Python 及行业相关信息。 |
| 8 | + |
| 9 | +如果你发现了有价值的信息、文章和工具等,可以到 [Issues](https://github.com/qiwihui/PythonWeekly/issues) 里提给我,记得写上推荐的理由。也欢迎提出意见和建议。 |
| 10 | + |
| 11 | +## :newspaper_roll: 新闻 |
| 12 | + |
| 13 | +### [PEP 622 ── 结构模式匹配](https://www.python.org/dev/peps/pep-0622/) |
| 14 | + |
| 15 | +这个 PEP 建议向 Python 添加模式匹配语句,以便创建处理结构化异构数据的更具表达力的方式。作者采用整体方法,提供了静态和运行时规范。 |
| 16 | + |
| 17 | +PEP 275 和 PEP 3103 先前提出了类似的构造,但被拒绝了。该设计不是针对 `if ... elif ... else` 语句的优化(如那些PEP所做的那样),而是着重于概括序列,映射和对象解构。它使用了 PEP 617 带来的语法功能,该功能引入了一种更强大的 Python 源代码解析方法。 |
| 18 | + |
| 19 | +## :pencil: 文章和教程 |
| 20 | + |
| 21 | +### [自学计算机科学](https://teachyourselfcs.com/) |
| 22 | + |
| 23 | +如果你是一个自学成才的工程师,或者从编程培训班毕业,那么你很有必要学习计算机科学。幸运的是,不必为此花上数年光阴和不菲费用去攻读一个学位:仅仅依靠自己,你就可以获得世界一流水平的教育。 |
| 24 | + |
| 25 | +互联网上,到处都有许多的学习资源,然而精华与糟粕并存。你所需要的,不是一个诸如“200+免费在线课程”的清单,而是以下问题的答案: |
| 26 | + |
| 27 | +- 你应当学习哪些科目,为什么? |
| 28 | +- 对于这些科目,最好的书籍或者视频课程是什么? |
| 29 | + |
| 30 | +在这份指引中,我们尝试对这些问题做出确定的回答。 |
| 31 | + |
| 32 | +**简而言之** |
| 33 | + |
| 34 | +大致按照列出的顺序,借助我们所建议的教材或者视频课程(但是最好二者兼用),学习九门科目。目标是先花100到200个小时学习完每一个科目,然后在你职业生涯中,不时温习其中的精髓。 |
| 35 | + |
| 36 | +### [从零开始的ASGI](https://shenli.dev/2020/06/20/asgi-from-scratch.html) |
| 37 | + |
| 38 | +通过构建 ASGI Web 框架来了解 ASGI! |
| 39 | + |
| 40 | +### [如何为自动化和协作设置 Python 项目](https://eugeneyan.com/writing/setting-up-python-project-for-automation-and-collaboration/) |
| 41 | + |
| 42 | +随着 Python 项目范围的扩大,它可能变得难以管理。 |
| 43 | + |
| 44 | +- 我们如何自动进行检查(例如,单元测试,类型检查,语法检查)? |
| 45 | +- 我们如何才能最小化协作开销(例如,代码审查,一致性)? |
| 46 | +- 我们如何通过增加最少的额外步骤来最大化开发人员的体验? |
| 47 | + |
| 48 | +在本文中,作者将分享了一种方法。完成后,我们将具有单元测试,覆盖率报告,语法检查和类型检查的自动化工作流,这些工作流将捕获大多数错误并促进协作。此工作流将通过单个命令在本地运行(进行检查),并通过每次 git push 在远程存储库中运行。 |
| 49 | + |
| 50 | +- 安装 Python 版本管理器 |
| 51 | +- 设置 Virtualenv 并安装软件包 |
| 52 | +- 建立一致的项目结构 |
| 53 | +- 添加一些基本方法 |
| 54 | +- 编写一些单元测试;他们是我们的安全带 |
| 55 | +- 检查代码覆盖;我们的测试有多广泛? |
| 56 | +- 语法检查以确保一致性(跨项目) |
| 57 | +- 检查类型错误以防止它们发生 |
| 58 | +- 为开发人员体验构建封套 |
| 59 | +- 每次 git push 自动执行检查 |
| 60 | +- 应用这些实践和经验 |
| 61 | + |
| 62 | +### [Pickle 的九个缺点](https://nedbatchelder.com/blog/202006/pickles_nine_flaws.html) |
| 63 | + |
| 64 | +Python 的 `pickle` 模块是序列化和反序列化对象的一种非常方便的方法。它不需要架构,并且可以处理任意 Python 对象,但这有问题。这篇文章简要说明了问题。 |
| 65 | + |
| 66 | +有人会告诉你不要使用 `pickle`,因为它很不好。我要说的是,如果你不在意以下九个缺点,你就可以使用 pickle: |
| 67 | + |
| 68 | +- 不安全 |
| 69 | +- 老 pickles 看起来像老代码 |
| 70 | +- 不明确(implicit) |
| 71 | +- 过度序列化 |
| 72 | +- `__init__` 没有被调用 |
| 73 | +- 仅限 Python |
| 74 | +- 不可读 |
| 75 | +- 出现将代码 pickle 的情况 |
| 76 | +- 慢 |
| 77 | + |
| 78 | +### [Python `heapq` 模块:使用堆和优先级队列](https://realpython.com/python-heapq-module/) |
| 79 | + |
| 80 | +**堆**和**优先级队列**是鲜为人知但很有用的数据结构。对于涉及在数据集中寻找最佳元素的许多问题,它们提供了一种易于使用且高效的解决方案。 Python `heapq` 模块是标准库的一部分。它实现了所有低层堆操作以及一些高层的堆通用用法。 |
| 81 | + |
| 82 | +优先级队列是一个功能强大的工具,可以解决各种问题,例如编写电子邮件调度程序,在地图上查找最短路径或合并日志文件。编程充满了优化问题,目标是找到最佳元素。优先级队列和 Python `heapq` 模块中的功能通常可以提供帮助。 |
| 83 | + |
| 84 | +在本教程中,你将学习: |
| 85 | + |
| 86 | +- 什么是堆和优先级队列,以及它们如何相互关联 |
| 87 | +- 使用堆可以解决哪些类型的问题 |
| 88 | +- 如何使用 Python `heapq` 模块解决这些问题 |
| 89 | + |
| 90 | +本教程适用于熟悉列表,字典,集合和生成器并正在寻找更复杂的数据结构的Pythonista 用户。 |
| 91 | + |
| 92 | +### [解读 Python 的元类](https://rednafi.github.io/digressions/python/2020/06/26/python-metaclasses.html) |
| 93 | + |
| 94 | +在 Python 中,元类是使你能够将元编程功能注入代码中的少数工具之一。术语元编程是指程序以自参考方式操纵自身的潜力。但是,与元类混为一谈通常被认为是普罗大众无法掌握的奥秘艺术。甚至提姆·彼得斯(Tim Peters)都建议你在处理这些问题时要谨慎行事。 |
| 95 | + |
| 96 | +> 元类是比99%的用户应该担心的更深的魔力。如果你想知道是否需要它们,则不需要(实际上需要它们的人肯定会知道他们需要它们,并且不需要解释原因)。 |
| 97 | +
|
| 98 | +元类是一个深奥的 OOP 概念,几乎隐藏在所有 Python 代码之后。你创建的每个 Python 类都将附加到默认的元类,并且 Python 巧妙地抽象出了所有元魔术。因此,无论你是否意识到,你一直都在间接使用它们。在大多数情况下,你无需意识到这一点。大多数 Python 程序员很少(即使有的话)也不必考虑元类。让我们深入其中。 |
| 99 | + |
| 100 | +### [使用 TensorFlow 和 LSTM 递归神经网络生成烹饪食谱:分步指南](https://github.com/trekhleb/machine-learning-experiments/blob/master/assets/recipes_generation.en.md) |
| 101 | + |
| 102 | +在构建食谱生成器的同时,了解 LSTM(长短期记忆)和 RNN(递归神经网络)技术,以便你也可以享受“洋葱奶油汽水”,“牛肉鲑鱼慕斯、墨西哥果酱和斯蒂尔顿沙拉”的美味作品。 |
| 103 | + |
| 104 | +<!-- ## :office: 项目,软件包和代码 |
| 105 | +
|
| 106 | +开源的项目,软件包和代码,以及开发过程中用常用的工具等。 |
| 107 | +
|
| 108 | +## :books: 书籍 |
| 109 | +
|
| 110 | +不错的书的推荐。 --> |
| 111 | + |
| 112 | +## :tv: 音视频 |
| 113 | + |
| 114 | +### 捕蛇者说 ── [Ep 15. 和 PyPA 的成员聊聊 Python 开发工作流](https://pythonhunter.org/episodes/ep15) |
| 115 | + |
| 116 | +本期邀请到了 PyPA 的成员 Frost Ming 和 Tzu-ping Chung 一起来聊一聊 Python 开发工作流中常见的工具。他们也分享了自己最近的工作,以及 Python 社区在这方面的最新动态。 |
| 117 | + |
| 118 | +## :coffee: 关注我们 |
| 119 | + |
| 120 | +RSS 订阅:[PythonWeekly RSS](https://pyweekly.qiwihui.com/feed.xml) |
0 commit comments