Python 周报,提供有价值的 Python 及行业相关信息。

如果你发现了有价值的信息、文章和工具等,可以到 Issues 里提给我,记得写上推荐的理由。也欢迎提出意见和建议。

:newspaper_roll: 新闻

PEP 622 ── 结构模式匹配

这个 PEP 建议向 Python 添加模式匹配语句,以便创建处理结构化异构数据的更具表达力的方式。作者采用整体方法,提供了静态和运行时规范。

PEP 275 和 PEP 3103 先前提出了类似的构造,但被拒绝了。该设计不是针对 if ... elif ... else 语句的优化(如那些PEP所做的那样),而是着重于概括序列,映射和对象解构。它使用了 PEP 617 带来的语法功能,该功能引入了一种更强大的 Python 源代码解析方法。

:pencil: 文章和教程

自学计算机科学

如果你是一个自学成才的工程师,或者从编程培训班毕业,那么你很有必要学习计算机科学。幸运的是,不必为此花上数年光阴和不菲费用去攻读一个学位:仅仅依靠自己,你就可以获得世界一流水平的教育。

互联网上,到处都有许多的学习资源,然而精华与糟粕并存。你所需要的,不是一个诸如“200+免费在线课程”的清单,而是以下问题的答案:

  • 你应当学习哪些科目,为什么?
  • 对于这些科目,最好的书籍或者视频课程是什么?

在这份指引中,我们尝试对这些问题做出确定的回答。

简而言之

大致按照列出的顺序,借助我们所建议的教材或者视频课程(但是最好二者兼用),学习九门科目。目标是先花100到200个小时学习完每一个科目,然后在你职业生涯中,不时温习其中的精髓。

从零开始的ASGI

通过构建 ASGI Web 框架来了解 ASGI!

如何为自动化和协作设置 Python 项目

随着 Python 项目范围的扩大,它可能变得难以管理。

  • 我们如何自动进行检查(例如,单元测试,类型检查,语法检查)?
  • 我们如何才能最小化协作开销(例如,代码审查,一致性)?
  • 我们如何通过增加最少的额外步骤来最大化开发人员的体验?

在本文中,作者将分享了一种方法。完成后,我们将具有单元测试,覆盖率报告,语法检查和类型检查的自动化工作流,这些工作流将捕获大多数错误并促进协作。此工作流将通过单个命令在本地运行(进行检查),并通过每次 git push 在远程存储库中运行。

  • 安装 Python 版本管理器
  • 设置 Virtualenv 并安装软件包
  • 建立一致的项目结构
  • 添加一些基本方法
  • 编写一些单元测试;他们是我们的安全带
  • 检查代码覆盖;我们的测试有多广泛?
  • 语法检查以确保一致性(跨项目)
  • 检查类型错误以防止它们发生
  • 为开发人员体验构建封套
  • 每次 git push 自动执行检查
  • 应用这些实践和经验

Pickle 的九个缺点

Python 的 pickle 模块是序列化和反序列化对象的一种非常方便的方法。它不需要架构,并且可以处理任意 Python 对象,但这有问题。这篇文章简要说明了问题。

有人会告诉你不要使用 pickle,因为它很不好。我要说的是,如果你不在意以下九个缺点,你就可以使用 pickle:

  • 不安全
  • 老 pickles 看起来像老代码
  • 不明确(implicit)
  • 过度序列化
  • __init__ 没有被调用
  • 仅限 Python
  • 不可读
  • 出现将代码 pickle 的情况

Python heapq 模块:使用堆和优先级队列

优先级队列是鲜为人知但很有用的数据结构。对于涉及在数据集中寻找最佳元素的许多问题,它们提供了一种易于使用且高效的解决方案。 Python heapq 模块是标准库的一部分。它实现了所有低层堆操作以及一些高层的堆通用用法。

优先级队列是一个功能强大的工具,可以解决各种问题,例如编写电子邮件调度程序,在地图上查找最短路径或合并日志文件。编程充满了优化问题,目标是找到最佳元素。优先级队列和 Python heapq 模块中的功能通常可以提供帮助。

在本教程中,你将学习:

  • 什么是堆和优先级队列,以及它们如何相互关联
  • 使用堆可以解决哪些类型的问题
  • 如何使用 Python heapq 模块解决这些问题

本教程适用于熟悉列表,字典,集合和生成器并正在寻找更复杂的数据结构的Pythonista 用户。

解读 Python 的元类

在 Python 中,元类是使你能够将元编程功能注入代码中的少数工具之一。术语元编程是指程序以自参考方式操纵自身的潜力。但是,与元类混为一谈通常被认为是普罗大众无法掌握的奥秘艺术。甚至提姆·彼得斯(Tim Peters)都建议你在处理这些问题时要谨慎行事。

元类是比99%的用户应该担心的更深的魔力。如果你想知道是否需要它们,则不需要(实际上需要它们的人肯定会知道他们需要它们,并且不需要解释原因)。

元类是一个深奥的 OOP 概念,几乎隐藏在所有 Python 代码之后。你创建的每个 Python 类都将附加到默认的元类,并且 Python 巧妙地抽象出了所有元魔术。因此,无论你是否意识到,你一直都在间接使用它们。在大多数情况下,你无需意识到这一点。大多数 Python 程序员很少(即使有的话)也不必考虑元类。让我们深入其中。

使用 TensorFlow 和 LSTM 递归神经网络生成烹饪食谱:分步指南

在构建食谱生成器的同时,了解 LSTM(长短期记忆)和 RNN(递归神经网络)技术,以便你也可以享受“洋葱奶油汽水”,“牛肉鲑鱼慕斯、墨西哥果酱和斯蒂尔顿沙拉”的美味作品。

:tv: 音视频

捕蛇者说 ── Ep 15. 和 PyPA 的成员聊聊 Python 开发工作流

本期邀请到了 PyPA 的成员 Frost Ming 和 Tzu-ping Chung 一起来聊一聊 Python 开发工作流中常见的工具。他们也分享了自己最近的工作,以及 Python 社区在这方面的最新动态。

:coffee: 关注我们

RSS 订阅:PythonWeekly RSS