Skip to content

Commit

Permalink
docs: python weekly #9
Browse files Browse the repository at this point in the history
  • Loading branch information
qiwihui committed Jun 27, 2020
1 parent 991a0d3 commit 52b0ac4
Showing 1 changed file with 120 additions and 0 deletions.
120 changes: 120 additions & 0 deletions _posts/2020-06-28-#9.md
Original file line number Diff line number Diff line change
@@ -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(递归神经网络)技术,以便你也可以享受“洋葱奶油汽水”,“牛肉鲑鱼慕斯、墨西哥果酱和斯蒂尔顿沙拉”的美味作品。

<!-- ## :office: 项目,软件包和代码
开源的项目,软件包和代码,以及开发过程中用常用的工具等。
## :books: 书籍
不错的书的推荐。 -->

## :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)

0 comments on commit 52b0ac4

Please sign in to comment.