-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
120 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |