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