Skip to content

Releases: qiwihui/PythonWeekly

Python 周报 #9 | 2020-06-28

27 Jun 16:04
Compare
Choose a tag to compare

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

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

🗞️ 新闻

PEP 622 ── 结构模式匹配

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

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

📝 文章和教程

自学计算机科学

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

互联网上,到处都有许多的学习资源,然而精华与糟粕并存。你所需要的,不是一个诸如“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(递归神经网络)技术,以便你也可以享受“洋葱奶油汽水”,“牛肉鲑鱼慕斯、墨西哥果酱和斯蒂尔顿沙拉”的美味作品。

📺 音视频

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

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

☕ 关注我们

RSS 订阅:PythonWeekly RSS

Python 周报 #8 | 2020-06-21

27 Jun 08:15
Compare
Choose a tag to compare

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

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

🗞️ 新闻

CUDA宣布支持 Windows Linux 子系统

为了响应大众的需求,Microsoft 在2020年5月的 Build 大会上宣布了Windows Linux 子系统2(WSL 2)的新功能──GPU加速。此功能为当前许多计算应用程序,专业工具和工作负载打开了大门,这些当前仅在 Linux 上可用,但现在可以在 Windows 上直接运行,并受益于 GPU 加速。

最重要的是,NVIDIA CUDA 加速现已应用于 WSL。在本文中,我们将在 WSL 2的“公共预览”中讨论对CUDA的期望。

Spark 发布 3.0.0 版

Apache Spark 3.0.0 是 3.x 系列的第一个发布版。投票于2020年6月10日获得通过。此发行版基于 git tag v3.0.0,其中包括截至6月10日的所有提交。Apache Spark 3.0 建立在 Spark 2.x 的许多创新之上,也带来了新的想法。作为已经开发的持续长期项目,在开源社区的巨大贡献的帮助下,由于440多位贡献者的贡献,此发行版解决了3400多个问题。

今年是 Spark 作为开源项目成立10周年。自2010年首次发布以来,Spark 已经发展成为最活跃的开源项目之一。如今,Spark 实际上是用于大数据处理,数据科学,机器学习和数据分析工作负载的统一引擎。

以下是 Spark 3.0 中的功能亮点:自适应查询执行;动态分区修剪;符合ANSI SQL;pandas API的重大改进;用于结构化流的新UI;调用 R 用户定义函数的速度提高了40倍;加速器感知调度器;和 SQL 参考文档。

📝 文章和教程

让 Python 整数可迭代

Python 中的 Iterable 是对象和容器,通常可以使用 for ... in 循环一步一步地访问每一项。并非所有对象都可以迭代,例如──我们不能迭代整数,它是一个单值。我们在此可以做的最好的事情是使用 range 类型对整数范围进行迭代,这有助于我们对 [0,n) 范围内的所有整数进行迭代。

由于整数是不可迭代的,因此当我们尝试 for x in 7 时,它将引发异常,指出 TypeError: 'int' object is not iterable。那么,如果我们更改 Python 的源代码并使整数可迭代,该怎么办呢?每次 for x in 7 时,不是引发异常,它实际上会迭代 [0,7) 内的值。 在本文中,我们将详细讨论这一点,整个过程为:

  • 什么是 Python 迭代?
  • 什么是迭代器协议?
  • 更改 Python 的源代码并使整数可迭代,以及
  • 为什么这样做可能不是一个好主意?

Python 关键字

每种编程语言都有特殊的保留字或关键字,这些特殊的保留字或关键字对应如何使用具有特定的含义和限制,Python 也不例外。Python 关键字是任何 Python 程序的基本构建块。在本文中,你将找到所有Python关键字的基本介绍,以及其他有助于进一步了解每个关键字的资源。在本文结束时,你将能够:

  • 识别 Python 关键字
  • 了解每个关键字的用途
  • 使用关键字模块以编程方式使用关键字

在 Python 中实现代理模式

在 Python 中,有一种说法是设计模式是反模式。同样,在动态语言领域中,设计模式还具有向核心逻辑注入附加抽象层并使流程不必要地模糊的恶名。Python 的动态特性以及将函数视为一等对象的做法通常会使 Java 式的设计模式变得多余。你几乎可以始终利用 Python 的一等对象,鸭子类型,猴子补丁等优势来完成手头的任务,而不必使用看似过度设计的模式来乱码。但是,最近有一种设计模式,我发现自己一遍又一遍地使用它来编写更具可维护性的代码,这就是代理模式。所以我想在这里记录下来以备将来参考。

我对 black 代码格式化器的不满

在这篇文章中,我将尝试收集关于自动代码格式化以及为什么我个人不喜欢这种方法的所有想法。我们将选择最时髦的工具──Black。

数据工程师对 Go 与 Python 的观点(第1部分)

探索 golang──我们可以放弃 Python 吗?而且我们是否(如“经常处理大量数据的人们”那样)最终找到了 go 的用例?第1部分探索了 Python 和 go 之间的高级差异,并给出了这两种语言的具体示例,旨在回答基于 Apache Beam 和 Google Dataflow 的实际示例。

尝试 Ansible 的 Python 替代品

我的 VPS(虚拟专用服务器)越来越老,运行它的公司宣布下个月,我使用的促销活动将到期,现在运行它的成本将超过三倍。另外,我想更新我家里的其他计算机,因为它们使用旧的Ubuntu。这导致我寻求某种类型的部署自动化,因此我可以将基础结构指定为代码,理想情况下再也不会花太多时间在它上面。

为什么不用 Ansible?

我不喜欢基于 YAML 的配置语言过度使用脚本语言。这是 Greenspun 第十条规则的经典示例:

任何足够复杂的 C 或 Fortran 程序都包含一个临时的,非正式指定的,bug丰富的,缓慢实现的 Common Lisp 一半。

每次我尝试使用 Ansible 时都会感到一团糟,这促使我去探索替代品,最好是在 python 中定义“配方”或任何简单的 python 代码的替代品。

在 Python 中调试内存不足崩溃

你运行程序崩溃了,它的内存不足:

  • 如果幸运的话,你会收到 MemoryError 异常。
  • 如果不那么幸运,你会获得一个 core dump。
  • 如果天气不好,你的计算机将锁定并且需要重新启动。
  • 你如何找出用完所有内存的 Python 程序了?

一种实现方法是使用 Fil 内存分析器,该工具专门(尽管在实验上)支持调试内存不足崩溃。但是,在了解它如何工作之前,让我们考虑一下为什么内存不足的情况如此痛苦。

实用,完整的 HTTP cookie 指南

在本指南中我们将学习 HTTP cookie,并使用 JavaScript 和 Python 编写实用示例,并提供有用的资源。

Docker 网络完整指南

容器需要彼此之间以及与外界的通信。Docker 具有广泛的网络功能。我们可以用docker网络做什么?我们如何使用它?

📚 书籍

算法(第一版)── Jeff Erickson

该网页包含作者自己出版的教科书《算法》的免费电子版,以及自1998年以来他为伊利诺伊大学香槟分校的各种理论计算机科学课编写的其他讲义。

☕ 关注我们

RSS 订阅:PythonWeekly RSS

Python 周报 #7 | 2020-06-14

13 Jun 15:46
Compare
Choose a tag to compare

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

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

🗞️ 新闻

“master”和“slave”:在反种族主义努力中,技术术语面临审查

在“Black Lives Matter”抗议活动期间,人们不断开展活动来更新硬盘驱动,相机闪存和数据库中使用的术语。

苹果,谷歌,微软和其他大型科技公司在过去两周困扰着美国的“Black Lives Matter”抗议活动中,就种族正义的必要性加强了评论。现在,越来越多的技术人员说,该行业本身的语言需要改变才能与种族主义作斗争。

用来描述两个计算机硬盘驱动器之间或两个相机闪光灯之间的关系的“主(master)”和“从(slave)”一词由于与美国的奴隶制历史有关而受到了严格的审查。同样,由于允许使用和拒绝使用服务的用语,“白名单(whitelist)”和“黑名单(blacklist)”由于其潜在的种族色彩而被重新考虑。

笔者个人观点:“Black Lives Matter”本来是一个正确的事情,只是当这个战火被引燃至技术领域时,你在用技术改变世界时却要被这些内容束缚,你不得不话更多的时间在这些无意义的事情上,你还有热情吗?联想到最近几年的好莱坞的电影电视创作中,总是伴随着必须要有的LGBT以及有色人种出现,编剧也不得不花费精力,这些不也是对思想自由的一种束缚吗?古语有云:过犹不及,事情做得过头,就跟做得不够一样,都是不合适的。

📝 文章和教程

终极 Python 初学者手册

在过去的几年中,Python 已成为增长最快的编程语言之一。如果你想进入编程领域,它不仅被广泛使用,而且还是一种很棒的语言。这份 Python 初学者指南可让你在数小时而不是数周的时间内学习该语言的核心。

快速信息:你可以下载此 Python 初学者指南的 PDF 版本

最佳机器学习书籍(2020年更新)

这是2020年最佳机器学习和深度学习书籍清单:

  • Aurélien Géron 的《Scikit-Learn 和 TensorFlow 机器学习实践》(第二版)
  • 《百页机器学习书》,作者:Andriy Burkov
  • 《构建机器学习支持的应用程序:从概念到产品》,作者 Emmanuel Ameisen
  • Andrew W. Trask 的 《Grokking Deep Learning》
  • Francois Chollet 的 《Python深度学习》
  • Ian Goodfellow,Yoshua Bengio,Aaron Courville 的《深度学习》
  • Richard S.Sutton,Andrew G.Barto 的《强化学习入门》(第2版)
  • Maxim Lapan 的《深度强化学习实践》(第二版)
  • 《TinyML:在 Arduino 上使用 TensorFlow Lite 和超低功耗微控制器进行机器学习》,作者 Pete Warden 和 Daniel Situnayake
  • Yaser S. Abu-Mostafa,Malik Magdon-Ismail 和 Hsuan-Tien Lin 的《从数据中学习》。
  • Judea Pearl 和 Dana Mackenzie 的《为什么》一书。
  • Gary Marcus 和 Ernest Davis 《重启 AI》
  • Andrew Ng 的《机器学习训练秘籍》。
  • Patrick Hall 和 Navdeep Gill撰写的《机器学习可解释性简介》(第2版)
  • Christoph Molnar 的《可解释性机器学习》。
  • 《神经网络和深度学习》,作者:Michael Nielsen。
  • David Foster 的《生成式深度学习》

即将出版:

  • 《使用 fastai 和 PyTorch 的深度学习:没有博士学位的AI应用程序》,作者 Jeremy Howard 和 Sylvain Gugger
  • 《机器学习工程书》,作者:Andriy Burkov
  • Chip Huyen 的《机器学习访谈书》
  • Robert Munro 的《人机共生机器学习》

异步应该是怎样的

在过去的几年中,async 关键字和语义进入了许多流行的编程语言:JavaScript,Rust,C# 和许多我们不知道或不使用的其他语言。当然,自 python3.5 起,Python 也具有 asyncawait 关键字。在本文中,我将提供有关此功能的意见,考虑替代方案,并提供新的解决方案。

上下文理解 Python 的 Asyncio

这个仓库包含一些很棒的博客文章,书籍,讲座和文档的链接,以帮助你开始使用和运行 Python 的异步范式。它试图避免过时的资源或包含过时的 API,这些资源会使 Python 的异步子空间显得过于复杂,尤其是对于初学者而言。

为什么要在 Python 中使用更多枚举

在本文中,你将学习什么是枚举以及如何创建和使用它们。此外,你还将了解为什么在日常编码中应该更频繁地使用它们。

Python 集合模块──高性能容器数据类型

Python 超级有用的 collections 模块的快速概述。

从零开始:反向模式自动微分(Python)

自动微分是深度学习框架的基础。深度学习模型通常使用基于梯度的技术进行训练,而 autodiff 甚至可以从庞大,复杂的模型中轻松获得梯度。反向模式 autodiff 由于其效率和准确性,是大多数深度学习框架使用的 autodiff 方法。

让我们:

  • 查看反向模式 autodiff 的工作方式。
  • 在 Python 中创建一个最小的 autodiff 框架。

小型autodiff框架将处理标量。我们可以(以后)使用 NumPy 对它进行矢量化处理。

关于术语的注意事项:从现在开始,autodiff 将表示“反向模式 autodiff”。 “梯度”的用法较为宽松,但在此情况下通常指“一阶偏导数”。

Python 和 Go:第一部分 - gRPC

Go 编程语言在编写高吞吐量服务时很有用,而 Python 在用于数据科学时很有用。在本系列博客文章中,我们将探讨如何使用每种语言来更好地发挥作用,并探讨 Go 和 Python 之间的各种交流方式。在本文中,我们将学习 Go 和 Python 程序如何使用 gRPC 相互通信。

让我们来做一个 Teeny Tiny 编译器

逐步构建可靠的编译器的一系列文章。

使用 Graphene 与 Django 设置 GraphQL 查询

在本教程中,你将看到如何将 GraphQL 与 Django 一起使用,以使用 graphene 和 graphene_django 为所有数据设置模式和单个入口。

打造一个带视觉能力的智能闹钟

关键词:Home Assistant,深度学习

☕ 关注我们

RSS 订阅:PythonWeekly RSS

Python 周报 #6 | 2020-06-07

06 Jun 16:59
Compare
Choose a tag to compare

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

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

📝 文章和教程

别用 datetime.now ── 实用 Python 依赖注入

如果你曾经进行过某项测试,然后某天开始无缘无故地失败,或者一次无明显原因的每次月圆之夜都失败了的测试,那么你的代码可能依赖于不确定性的东西。本文介绍了一种在 Python 中进行依赖项注入的实用方法,该方法正确使用后可以消除不确定性,并使你的代码更易于维护和测试。

Python 依赖管理工具概述

完全被所有用于管理依赖项的工具所迷惑吗?pip,venv,Docker,conda,virtualenvwrapper,pipenv,poetry 等等,你应该使用哪一个?为什么我们甚至拥有所有这些不同的工具?他们可以一起工作吗?这篇文章简要介绍了每种工具,创建原因以及解决的问题。在文章的结尾,你可以找到一张表格,其中汇总了所有信息以及人们使用的常用设置。

在 Raspberry Pi 上使用 Python 构建物理项目

Raspberry Pi 是市场上领先的物理计算板之一。从建立 DIY 项目的爱好者到初次学习编程的学生,人们每天都在使用 Raspberry Pi 与周围的世界互动。Python 内置在Raspberry Pi 中,因此你可以掌握自己的技能,立即开始构建自己的 Raspberry Pi 项目。

在这篇教程中,你将学习:

  • 设置新的 Raspberry Pi
  • 使用 Mu 编辑器在 Raspberry Pi 上运行 Python 或通过 SSH 远程运行
  • 从连接到 Raspberry Pi 的物理传感器读取输入
  • 使用 Python 将输出发送到外部组件
  • 在 Raspberry Pi 上使用 Python 创建独特的项目

使用 Python 在 Django 中构建模型多态(Polymorphism)

在关系数据库中对多态进行建模是一项艰巨的任务。在本文中,我们介绍了几种建模技术,它们使用 Django 对象关系映射(ORM)来表示关系数据库中的多态对象。本中级教程适用于已经熟悉Django基本设计的读者。

从零开始构建一个 Web 框架

WEB 框架提供的功能包括(1)Request & Response 对象,(2)路由管理,(3)模板引擎,(4)对象关系映射(ORM)等功能,这篇演讲介绍了如何从零开始构建一个 Web 框架,可以在这儿查看演示稿。

SOLID 设计原理的 Python 指南

Michael Feathers 基于 Robert C. Martin 论文《设计原理和设计模式》中的原理而创建的助记符 SOLID 功不可没。这些原则是

  • 单一责任原则
  • 开闭原理
  • 里斯科夫的替换原则
  • 接口隔离原理
  • 依赖倒置原则

我们很快将详细介绍这些内容。关于 SOLID 设计原则要注意的最重要的一点是,它们应整体使用。选择一个而只有一个不会对你有多大帮助。当一起使用时,你会开始看到这些原则的真正价值。

统一 Python 仓库

在 Opendoor,我们有很多 Python 服务。最初它们分散在几个 Git 仓库中,这引起了一些问题,我将在稍后描述。为了消除这些问题,我们决定将所有新的 Python 服务放在一个Git存储库中,尽管这些服务保持独立。本文介绍了对我们来说行之有效的方法,包括仓库组织,依赖管理,代码共享和 CI/CD。

Django Rest Framework 的批量更新

通用 rest framework 框架入口通常设计为一次修改一个对象。但是,你经常会发现,当你需要修改数千个对象时,这可能成为性能的巨大瓶颈。在这种情况下,最好执行一次调用来批量执行该操作,而不是对入口进行数千次调用。在本教程中,我们将向你展示如何将更新 API 的速度提高10倍。

Python 调试终极指南

即使你编写清晰易读的代码,即使你用测试覆盖代码,即使你是一个非常有经验的开发人员,也不可避免地会出现奇怪的错误,并且你将需要以某种方式进行调试。很多人诉诸于仅使用一堆打印语句来查看代码中正在发生的事情。这种方法远非理想,还有很多更好的方法来找出你的代码出了什么问题,我们将在本文中探讨其中的一些方法。

53个 Python 面试问答

数据科学家和软件工程师的 Python 问题。

🏢 项目,软件包和代码

sickcodes/Docker-OSX:在 Docker 容器中运行Mac!在 Docker 中的运行接近原生的 OSX-KVM!使用 X11 转发!

encode/httpx:HTTPX 是一个功能齐全的,Python 3 的 HTTP 客户端,它提供同步和异步API,并支持 HTTP/1.1 和 HTTP/2。

PicardParis/cherry-on-py:使用机器学习模型和无服务器管道自动生成视频的摘要。

📺 音视频

PythonBytes - Episode #184: Too many ways to wait with await?

使用 Python 的 asyncio 的主要吸引力之一是能够触发许多协程并同时运行它们。你知道等待结果的方式有几种吗?

☕ 关注我们

RSS 订阅:PythonWeekly RSS

Python 周报 #5 | 2020-05-31

30 May 12:56
Compare
Choose a tag to compare

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

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

📝 文章和教程

人工智能本科学位的完整四年课程计划

现在已经离开学校一段时间了,我有很多时间来思考某些课程对我在人工智能和机器学习领域的职业准备有多好。最终,我决定发表自己的想法,并为四年制人工智能本科学位设计完整的课程。

这些课程旨在为人工智能和计算机科学领域的新手提供广度和深度。该课程的灵感主要来自于我所修的课程,反映了我认为当今成功从事人工智能事业必不可少的技能。

虽然你可以通过单个 Coursera 课程获得一些 AI 知识,但我在这里的重点是发展对这些概念的实际应用的深刻概念理解。对领域的透彻了解确实需要时间,快捷方式不起作用,因此这就是为什么此列表适合希望从基础知识系统地开始学习的人们的原因。

  • 第一年:建立基础
  • 第二年:探索领域,构建系统知识
  • 第三年:深入学习高级课程
  • 第四年:真实经验至关重要

实用 Python 编程

《Python Cookbook》作者 David Beazley 放出了一份 Python 教程,适合有其他语言基础想快速上手 Python 的科学家、工程师和程序员,这本教程预计需要花费 25-35 小时的学习时间,包含 130 个上手的代码练习。教程的目的是涵盖 Python 编程的基础方面,重点是脚本编写,数据操作和程序组织。在教程结束时,学生应该能够自己开始编写有用的 Python 程序,或者能够理解和修改其同事编写的 Python 代码。

可能的中文翻译版本正在进行:实用 Python 编程中文版

超现代 Python

2020年新的一年标志着 Python 2 和 Python 3 10年并存的终结。在此期间,Python的格局已发生了巨大变化:现在,许多新工具和最佳实践改善了 Python 开发人员的体验。但是,由于遗留支持的限制,它们采用的方法比较滞后。

这个系列文章是有关现代 Python 工具的指南,重点放在简单性和简约性上。它将带领你逐步创建完整且最新的Python项目结构,包括单元测试,静态分析,类型检查,文档,持续集成和交付。

这个指南面向热衷于从一开始就学习最佳实践的初学者,以及经验丰富的 Python 开发人员,他们的工作流程受到传统工具箱所需的模板和解决方法影响。

这个系列文章包含六个部分:

Django 的缓存和扩展

缓存是与数据库索引一起扩展的最重要方面。如果做对了,使用其中任何一种都可以达到99%的速度改进。作者使用 Django 已经超过6年,他将分享在扩展到数百万用户上经验,这些技术和见解不仅限于 Python 或 Django,它们是通用的。对于本教程,django 的内置内存缓存就足够了,你无需设置 Redis 或内存缓存服务器。

如何编写可安装的 Django 应用

在 Django 框架中,项目是指特定网站的配置文件和代码的集合。Django 将业务逻辑分组为所谓的应用程序,这是 Django 框架的模块。关于如何构建你的项目以及其中的应用程序的文档很多,但是当打包可安装的 Django 应用程序时,却很难找到信息。

在本教程中,你将学习如何从 Django 项目中提取应用程序并将其打包以使其可安装。打包应用后,你可以在PyPI上共享它,以便其他人可以通过 pip 安装来获取它。

在本教程中,你将学习:

  • 编写独立应用程序与在项目内部编写应用程序之间有什么区别;
  • 如何创建 setup.cfg 文件以发布 Django 应用;
  • 如何在 Django 项目之外引导 Django,以便你可以测试你的应用;
  • 如何使用 tox 跨多个版本的 Python 和 Django 测试;
  • 如何使用 Twine 将可安装的 Django 应用发布到 PyPI。

用于网络 I/O 的 Python 中的并发──同步,线程,多进程和异步IO

在本文中,我们来看看在 Python 中执行批量 HTTP 请求的一些方法以及我们可以使用的一些工具。主要,我们将研究以下几种方式:

  • 使用 requests 模块同步执行;
  • 使用 multiprocessing 模块并行执行;
  • 使用 threading 模块多线程执行;
  • 基于 asyncio 模块的事件循环。

使用 Python 和 Redis 轻松进行 API 请求缓存

Redis 是一个快速,轻量级的内存数据库,具有其他持久性选项。在这里,缓存可以使你免于冗余的 API 请求,并且还可以大大缩短响应时间。缓存过程:

  • 使用键值数据结构在 Redis 中缓存 API 响应;
  • 在记录上设置超时;
  • 如果记录存在,则从缓存服务新请求;
  • 如果未缓存响应,则仅向 API 发送新请求,然后将该响应添加到缓存。

在 Wikipedia 上使用 BERT 构建问答系统

这是一个使用 PyTorch 和 Hugging Face 构建基于 IR 的问答系统的高级代码演练。包括以下部分:

  • 安装库并设置环境;
  • 在 SQuAD 数据集上训练 Transformer 风格模型;
  • 了解 Hugging Face 的 run_squad.py 训练脚本和输出;
  • 使用完整的维基百科文章作为问题的上下文。

在这篇文章的结尾,我们将有一个基于 IR 的有效 QA 系统,其中 BERT 作为文档阅读器,而 Wikipedia 的搜索引擎作为文档检索器。这是一个有趣的玩具模型,但也暗示了潜在的实际使用。

NLP 中数据增强的可视化调查

与“计算机视觉”中使用图像数据增强是一种标准做法不同,在NLP中,文本数据的增强非常少见。这是因为对图像进行细微的操作(例如将图像旋转几度或将其转换为灰度)不会改变其语义。 语义上不变的转换的存在是使增强成为计算机视觉研究中必不可少的工具包的原因。

作者很好奇是否有尝试为 NLP 开发增强技术的方法,并探讨了现有文献。在这篇文章中,作者将基于他的发现概述当前用于文本数据增强的方法。

简化语言技术,从构思到部署

自然语言处理(NLP)的诞生通常得到著名图灵测试的认可:人类可以将人类对话与计算机对话区分开吗?七十年后,NLP 领域继续取得巨大进步。基于规则的,统计的以及最近基于神经网络的方法已经解决了分析,组织和生成人类语言的尝试。

eBay 的独特之处在于它在许多语言和类别中无与伦比的库存,以及用户生成的输入和查询。对于一家全球电子商务公司而言,NLP 仍然是其业务的核心,例如:

  • 语言表示模型,可提高搜索的相关性和排名;
  • 连接买家和卖家的机器翻译,即使他们说不同的语言;
  • 命名实体识别(NER),可在查询中提取产品特征和品牌名称;
  • 拼写更正,可指导客户选择预期的商品。

在 eBay 和 NLP 研究社区中,已经通过几种不同的编程语言和工具包来处理这些任务。值得注意的是,基于 Python 的工具包在最近几年中获得了最大的关注。

如何使用 Python 构建唇彩搜索引擎

如何以及为什么要构建唇彩搜索引擎。

🏢 项目,软件包和代码

dry-python/returns: 使你的函数返回有意义,类型注释且安全的内容!

benbusby/whoogle-search:自托管,无广告,尊重隐私的 Google 元搜索引擎。

获取 Google 搜索结果,但不包含任何广告,javascript,AMP 链接,cookie 或 IP 地址跟踪。一键式轻松部署为 Docker 应用程序,并使用单个配置文件进行自定义。可以快速简便地实现为台式机和移动设备上的主要搜索引擎替代品。

rrebase/knboard:使用 React 和 Django 构建的看板,类似于 Trello

fengsp/django-grpc-framework:Django gRPC 框架是受 djangorestframework 启发而构建 gRPC 服务的工具包。

📚 书籍

《高性能 Python(第二版)》

你的 Python 代码可能能正确运行,但是你需要使其运行得更快。此扩展版本针对 Python 3 进行了更新,向你展示了如何查找性能瓶颈并显著提高大数据量程序中的代码速度。通过探索设计选择背后的基本理论,《高性能 Python》可帮助你更深入地了解 Python 的实现。

你如何利用多核架构或集群,或者构建一个可以在不损失可靠性的情况下进行伸缩的系统?经验丰富的 Python 程序员将学习许多问题的具体解决方案,以及了解使用高性能 Python 进行社交媒体分析,生产化机器学习等的公司的战争故事。

  • 更好地掌握 NumPy,Cython 和分析器;
  • 了解 Python 如何抽象底层计算机架构;
  • 使用性能分析来查找 CPU 时间和内存使用方面的瓶颈;
  • 通过选择适当的数据结构来编写高效的程序;
  • 加快矩阵和矢量计算;
  • 使用工具将 Python 编译为机器代码;
  • 并发管理多个 I/O 和计算操作;
  • 转换多进程代码以在本地或远程集群上运行;
  • 使用 Docker 之类的工具更快地部署代码。

《高性能 Python(第二版)中的代码可以在这里找到。

CPython Internals ── Python 3 解释器指南

作者 Anthony Shaw 是 CPython 贡献者和 PyCon 演讲者。 他拥有计算机科学方面的经验,并拥有8年以上使用 Python 的经验。Anthony 还是 Python 软件基金会的会员,也是开源Apache基金会的成员。在本书中,你将了解到 CPython 内部原理的关键概念,以及它们在进行操作时如何通过可视化解释进行工作。

事实证明,CPython 是最流行的 Python 运行时,是用人类可读的 C 和 Python 代码编写的,CPython 解释器抽象了底层 C 平台和你的操作系统的复杂性。它使跨平台的线程变得简单明了,它承担了 C 语言中的内存管理之苦,并且使其变得简单。简而言之,CPython 为你提供了使用 Python 舒适而强大的语法编写可扩展和高性能应用程序的平台。通过“窥视” Python 运行时,你将加深技巧并成为真正的 Pythonista。与真正掌握 Python 相比,你将更向前迈进一步,从而使你能够编写既美观又惯用的代码,而且又快速又高效。

☕ 关注我们

RSS 订阅:PythonWeekly RSS

Python 周报 #4 | 2020-05-24

23 May 16:27
Compare
Choose a tag to compare

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

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

🗞️ 新闻

Microsoft OpenAI 可以基于函数签名和注释编写 Python 代码

看起来有意思。

📝 文章和教程

Python 的子解释器

一个已经在 Python 世界中流传了很多年的项目现在正在努力实现是否包含在该语言中。“子解释器”是当前可以通过 C API 扩展创建的独立的 Python 解释器,在某些情况下被视为一种获得更像 Go 的 Python 并发模型的方式。实现该目标的第一步是在标准库中公开该 API。但是,有一个问题是子解释器实际上是否真的是 Python 的理想功能,以及是否希望实现并发性改进。

Python 与 JavaScript 对比

Python 和 JavaScript 是世界上最流行的两种编程语言。在这篇教程中,你将通过比较 Python 与 JavaScript 来深入了解 JavaScript 生态系统。你将从Pythonista 的角度学习术语,语言历史和最佳实践。

Patio11 定律

Patio11 是推特上知名的程序员,上周针对软件市场的纵深程度发表了看法,而后被人总结成 Patio11 定律:软件市场远比你想象得要大得多,即使你考虑了 Patio11 定律:

  • 只有 7% 的软件被 TechCrunch、Recode 以及 HN 等主流提及
  • 细分如葬礼服务的软件可以达到千万美金年销量

Python 缓存整数

Python 中的整数不是传统的2、4或8字节实现,而是将其实现为以 2^30 为基的数字数组,这使 Python 支持超长整数。由于大小没有明确限制,因此在Python中使用整数非常方便,因为我们可以对很长的数字进行运算,而不必担心整数溢出。这种便利的代价是分配成本高昂,而琐碎的运算(例如加法,乘法,除法)效率低下。

可以观察到,与其他较长的整数相比,-5 至 256 范围内的较小整数被非常频繁地使用,因此为了获得性能优势,Python 在初始化过程中预先分配了该整数范围,并使它们成为单例,因此每次都使用较小的整数值引用而不是分配新的整数,然后传递相应单例的引用。

理解 Python 装饰器

装饰器可以使你能够向任何可调用对象添加新功能,而无需实际触摸或更改其中的代码。通常,这可以产生更好的封装,并帮助你编写更简洁,更易理解的代码。但是,装饰器在 Python 中被认为是相当高级的主题,因为理解和编写装饰器需要你对多个附加概念(例如,一级对象,高阶函数,闭包等)进行命令。这篇文章将尝试根据需要介绍这些概念,然后逐层展开装饰器的核心概念。

当你在浏览器中输入 google.com 并且按下回车之后发生了什么?

这个仓库试图回答一个古老的面试问题:当你在浏览器中输入 google.com 并且按下回车之后发生了什么?不过我们不再局限于平常的回答,而是想办法回答地尽可能具体,不遗漏任何细节。

我如何从 GitHub 敏感信息泄漏中获得 $10K 赏金

API 密钥,密码和客户数据每天都意外地发布到GitHub。黑客使用这些密钥登录服务器,窃取个人信息,并蓄积荒谬的AWS费用。GitHub泄漏可能使公司蒙受数千乃至数百万美元的损失。在 GitHub 上收集开源情报已成为每一个安全研究人员的强大工具:来自 NC State 的研究人员甚至撰写了有关该主题的学术论文。本文是为漏洞赏金猎人和企业信息安全团队编写的,展示了用户发布到公共 GitHub 存储库中的敏感信息(秘密)的常见类型,以及用于查找它们的启发式方法。本文中的技术也可以应用于 GitHub Gist 片段。

优化 Django ORM 查询

Django ORM(对象关系映射)是 Django 最强大的功能之一。它使我们能够使用 Python 代码而不是 SQL 与数据库进行交互。

它具有多个优点:

  • 数据库引擎是从我们这里抽象出来的,因此可以轻松切换到另一个数据库系统。
  • 它支持迁移:我们可以通过更新模型轻松地更改表,并且 Django 将自动生成更新数据库表所需的迁移脚本。
  • 它支持事务:你可以在一个事务中对数据库进行多次更新,如果失败,则将其回滚到开始时的状态。

但这也有一些缺点:

  • 由于它是基于SQL的抽象,因此晦涩难懂,因此我们无法确切知道将从我们的 Python 代码生成哪些 SQL 查询。
  • Django 无法猜测何时需要使用相关表,因此在需要它们时不会为我们做 JOIN
  • ORM 给我们一种错误的感觉,即我们所做的事情并不昂贵。我们没有简单的方法知道访问对象中的属性可能会触发对数据库的查询,而这可能是用 JOIN 替代的。

为了克服这些缺点,我们需要更加了解它,并了解背后发生的事情。

使用Celery(和其他任务队列)的常见问题

这是在使用Celery的Django项目中多次遇到的一些问题,它们可能适用于其他任务队列。

  1. 在插入队列时数据而不是引用;
  2. 在数据库事物中插入任务队列;
  3. 在任务中不要使用数据库事务;
  4. 默认的“不公平”任务分配;
  5. 在遥远的未来中使用长 lockdowneta
  6. ACKS 行为;
  7. 不要重试失败的任务;
  8. 以向后不兼容的方式更改任务签名;

浮点数如何导致了 4.92000008 级地震?

刚收到一个地震速报,说美国发生了一场 M4.92000008 级地震。这个数字实在太过于微妙,我们很少见到精确到小数点后那么多位的地震级数。News Digest 网站迅速删除了这篇报道,并且补上了一篇 M4.9 级的报道。

然而,这么奇怪的地震级数是怎么发生的?

相关阅读:为什么 0.1 + 0.2 = 0.300000004

如何弃用PyPI包

你如何弃用已发布到 PyPI 的 Python 软件包并希望人们停止使用?你应该删除吗?查看本指南以了解完成此任务的几种方法。你还可以尝试 PyPI 支持的新 yank 功能。

使用 Python 建立 Markdown 到 HTML 转换流程

在本系列文章中,我想向你展示如何为构建自己的 markdown 转 HTML 生成器。该系列包括三个部分:

  • 第1部分 介绍了整个生成流程的实现。
  • 第2部分 通过一个模块扩展了实现的管道,该模块用于计算给定文章的估计阅读时间。
  • 第3部分 演示了如何使用管道生成自己的 RSS feed。

JupyterDash 介绍

JupyterDash,新库,可轻松从 Jupyter 环境构建 Dash 应用程序。这篇文章向你介绍JupyterDash的功能。

适用于 Python 和 Docker 的安全扫描程序:从代码到依赖项

你不想将不安全的代码部署到生产中,但是很容易漏过错误和漏洞。因此,你需要一种无需考虑即可自动捕获安全问题的方法。

这就是安全扫描程序的用武之地。它们不会解决你的所有问题──所以,你仍应当使用主动指出不安全依赖的服务。但是,你可以在构建或持续集成系统中进行一些自动检查,以帮助发现问题。

对于打包在 Docker 中的 Python 应用程序,漏洞可能发生在几个地方:

  • 你的代码。
  • 你代码的 Python 依赖项。
  • Docker 镜像中包含的系统软件包(Debian / CentOS / Ubuntu 等)

这篇文章提供了这些情况下的检查方法。

用于 Web 开发的自托管工具

拥有一些自托管的服务和工具可以使你作为开发人员的生活以及总体上的生活变得更加轻松。作者将在这篇文章中分享一些他的最爱。作者几乎将这些用于每个项目,它们确实使他的生活更轻松。

除 OpenFaaS 之外,所有这些都托管在具有2个 CPU 内核,8GB RAM 和 80GB SSD 的单个VPS上,并具有足够的备用容量。

构建 FunctionTrace,一个图形化的 Python 分析器

🏢 项目,软件包和代码

python-keyboard:由 Python 驱动的手工连线 USB 和 BLE 键盘

py-spy:适用于Python程序的采样探查器

py-spy 是 Python 程序的采样分析器。它使你可以直观地看到 Python 程序花费的时间,而无需重新启动程序或以任何方式修改代码。py-spy 的开销非常低:它是用 Rust 编写的,以提高速度,并且与配置的 Python 程序不在同一进程中运行。这意味着 py-spy 可以安全地用于生产 Python 代码。

py-spy 可在 Linux,OSX,Windows 和 FreeBSD 上运行,并支持对所有最新版本的 CPython 解释器(2.3-2.7和3.3-3.8版)进行性能分析。

📺 音视频

Talk Python To Me ── Python 为什么慢

关于 Python 是快还是慢的争论永无止境。这取决于你要优化的内容:服务器 CPU 消耗?开发时间?可维护性?有很多因素。但是,如果我们继续关注 Python 层中的纯计算速度,那么是的,Python 很慢。

在本集中,我们再次邀请到 Anthony Shaw。 他在这里探讨 Python 比其他许多同等语言和技术(例如 C++ 和 JavaScript)计算速度慢的原因。

☕ 关注我们

RSS 订阅:PythonWeekly RSS

Python 周报 #3 | 2020-05-17

16 May 16:06
Compare
Choose a tag to compare

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

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

🗞️ 新闻

呼吁志愿者!Python GitHub 迁移工作组

工作组正在寻找志愿者参与 Python 从 bugs.python.org 到 GitHub 的迁移。工作组要确保迁移的方向能够代表社区的需求!

Rust 语言5岁了

Rust 是一种通用的编程语言,使每个人都可以构建可靠且高效的软件。Rust 可以构建在堆栈中的任何位置运行,无论是作为操作系统的内核还是Web应用程序。它完全由一个开放的,多元化的个体社区组成,主要是志愿者,他们慷慨捐赠自己的时间和专业知识来帮助 Rust 成为现实。从2015年 Rust 发布1.0至今已经五年了!在过去的五年中,Rust发生了很大的变化,因此,Rust核心开发者回顾了自语言稳定以来所有贡献者的工作。

📝 文章和教程

MIT 实用工具课程

从操作系统到机器学习,所有课程都可以教你计算机科学方面的高级主题,但是其中一门关键主题却很少涉及,而是让你自己弄清楚:对工具的熟练程度。MIT 推出的这门极为“实用”的课程,介绍了比如如何使用一些好用(能大大提高生产力)的工具,如命令行、编辑器、版本控制、tmux、profiler、数据处理工具(如awk、sed、grep、perl)等等。

Python 工匠:写好面向对象代码的原则

《Python 工匠》是 @piglei 的编程经验分享,内容涵盖编码技巧、最佳实践与思维模式等方面。“写好面向对象代码的原则”这个系列的文章中,作者用一个真实的 Python 代码样例向读者介绍了 SOLID 设计原则。可以说,在编写 OOP 代码时,如果遵循这 5 条设计原则,就更可能写出可扩展、易于修改的代码。相反,如果不断违反其中的一条或多条原则,那么很快你的代码就会变得不可扩展、难以维护。这 5 条设计原则分别是:

  • S:单一职责原则
  • O:开放-关闭原则
  • I:接口隔离原则
  • L:里氏替换原则
  • D:依赖倒置原则

通过在开源项目里中反编译 Python 字节码来发现秘密

缓存控制着我周围的一切。pyc 文件可以包含机密信息,不应将其检入源代码管理。使用标准的 Python .gitignore 文件。

重新映射 Python 操作码

通过重新映射(remap)Python 操作码,作者反编译了一份混淆过的 Python 字节码,从而复原了源码。

推荐阅读:“保护 Python 代码库”系列文章:

讨论中:Python的性能

在本文中,作者采访了 Python 核心开发人员 Victor Stinner(VS)和经验丰富的 Python 开发人员 Julien Danjou(JD)。对于在Python社区中已有一段时间的人来说,他们的名字应该很熟悉。与其他一些文章讨论Python为何运行缓慢的技术原因不同,本文重点介绍了为提高Python性能而付出的努力和遇到的困难。

── 引自 @laike9m 的文章:我对“讨论中:Python 的性能”的反应

使用 Python concurrent.futures 轻松实现并发

使用 Python concurrent.futures 包实现简单任务的并发。

Python 风格的要素

这篇文章基于 PEP8,覆盖语法、模块布局、范式和架构等多个方面,介绍了一些个人认为比较好的 python 编写风格。

如何将Django模型移动到另一个应用程序

在这个分步指南中,我们将学习如何使用 Django migration 将 Django 模型从一个应用程序迁移到另一个应用程序。你将探索三种不同的技术,并学习一些有用的指南,以根据自己的情况和需求选择最佳方法。

在计算机视觉和深度学习中的伦理应用──通过自动年龄和军事疲劳检测识别儿童兵

在本教程中,我们将学习如何应用计算机视觉,深度学习和 OpenCV 通过自动年龄检测和军事疲劳识别来识别潜在的儿童兵。

并非每个容器内部都有一个操作系统

但是每一个都需要你的 Linux 内核。这篇文章解释了容器化技术的一些底层原理,对于了解容器很有帮助。

🏢 项目,软件包和代码

pywasm:用纯 Python 编写的 WebAssembly 解释器

MicroscoPy:使用乐高积木,Arduino,树莓派和3D打印构建的开源,电动模块化显微镜。

📺 音视频

Podcase.__init__ ── 第262期:在远程工作时代管理分布式团队

我们中有更多的人比以往任何时候都在远程工作,许多人以前没有使用远程工作环境的经验。在本集中,Quinn Slack 讨论了他经营 Sourcegraph 作为一家完全分布式公司的想法和经验。他介绍了从部分迁移到完全远程所学到的经验教训,在管理分布式劳动力方面行之有效的实践,以及他在此过程中面临的挑战。如果你在远程工作中挣扎,那么本次对话提供了一些有用的技巧和参考,可供你进一步阅读,以帮助你在当前的环境中取得成功。

回形针:二维码的秘密

你扫描二维码的一瞬间究竟发生了什么?为什么二维码被破坏了也能扫出来?在这集视频中,回形针团队用形象的方式向我们介绍了二维码的生产过程以及背后的原理。

☕ 关注我们

RSS 订阅:PythonWeekly RSS

Python 周报 #2 | 2020-05-10

10 May 08:28
Compare
Choose a tag to compare

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

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

🗞️ 新闻

Python 3.9 发布时间表

在上周的周报中,我们将 Python 3.9 的发布日期弄错了,以下是正确的日期:3.9.0最终版预计于2020年10月5日发布。2020年5月18日,将发布 3.9.0 beta 1版,标志着功能冻结阶段的开始。

2020 Python 语言峰会

Python 语言峰会是由 Python 语言实现者(包括 CPython 和替代 Python 的核心开发人员)以及第三方库作者和其他 Python 社区成员组成的小型聚会。峰会的特色是简短的演讲,然后进行小组讨论。2020年,峰会通过视频会议举行了两天;并使用语音和聊天形式结合提出问题。Python 软件基金会(PSF)正在发布演示文稿的摘要。

TensorFlow 2.2.0 发布

TensorFlow 2.2.0 正式发布了,该版本终止了对 Python 2 的支持。与此同时,TensorFlow 的 Docker 镜像的新版本仅提供Python 3。由于现在所有镜像都使用Python 3,因此将不再提供包含 -py3 的 Docker 标签,并且不会更新现有的 -py3 标签(例如 latest-py3)。查看发行说明以了解此发行版中的其他功能和改进。

Python开发人员调查2019年结果

去年11月,来自150多个国家/地区的24,000多名 Python 用户参加了这项调查。借助收集到的数据,我们能够呈现汇总的结果,识别最新趋势并创建 Python 开发人员形象。

📝 文章和教程

机器学习和深度学习基础

本系列为初学者介绍了深度学习和人工神经网络基础的概念。 除了涵盖这些概念之外,我们还将展示如何使用 Keras(一种用 Python 编写的神经网络 API)在代码中实现某些概念。 我们将学习人工神经网络中的层,激活函数,反向传播,卷积神经网络(CNN),数据增强,迁移学习等等!

Python CLI 漫游指南

这片文章基于作者同名 PyCon 2020演讲

第1部分──终端和 CLI 的剖析:了解终端和 CLI 的工作方式。

第2部分──用于编写 CLI 的 Python 软件包:查看可用于编写 CLI 的软件包,这些软件包可在 Python 标准库和 PyPI 中获得。

第3部分──使用 Click 编写和打包 CLI:探索各种 CLI 用例,并了解如何使用 Click 和一些常用的 git 子命令来实现 git 的克隆。

第4部分──用户体验:查看一些可以创建良好的 CLI 用户体验的原则。

Python Functools 模块简介

functools 模块是 Python 标准库的一部分,是针对高阶函数实现的。高阶函数是作用于或返回另一个函数或多个函数的函数。通常,就此模块而言,任何可调用对象都可以视为函数。functools 提供11个函数:

  • cached_property()
  • cmp_to_key()
  • lru_cache()
  • partial()
  • partialmethod()
  • reduce()
  • singledispatch()
  • singledispatchmethod()
  • total_ordering()
  • update_wrapper()
  • wraps()

在整篇文章中,我们将仔细研究每个函数以及一些有用的示例。你可以在 GitHub 上找到本文中使用的代码段。

使用Python datetime处理日期和时间

处理日期和时间是编程中的最大挑战之一。在处理时区,夏令时和不同的书面日期格式之间,很难跟踪所指向的日期和时间。幸运的是,Python 内置的 datetime 模块可以帮助你处理日期和时间的复杂。在本教程中,你将学习:

  • 为什么用日期和时间编程是一个挑战
  • Python datetime 模块中提供哪些功能
  • 如何以特定格式打印或阅读日期和时间
  • 如何对日期和时间进行算术运算

另外,你将开发一个精巧的应用程序,以计算到下一次 PyCon US 之前的剩余时间!

为什么测试用例要写文档

很明显,一段时间之后你可能就忘了测试用例写了啥了。

Python 中的一些安全问题

文章分析了 Python 中的一些安全问题,涉及的方面包括:

  • Input function
  • Assert statement
  • Reusable integers
  • Floats comparison
  • Private attributes
  • Module injection
  • Code execution on import
  • Monkey patching
  • Shell injection via subprocess
  • Temporary files
  • Insecure deserialization
  • Templating engines

Python 2 死亡的变化

年初,Python 2发行系列已结束其 Python 核心团队的上游支持,2020年4月20日,Python 2系列的最后一个版本 2.7.18 也正式发布。尽管操作系统供应商将在一段时间内支持 Python 2,并且其他一些社区项目声称他们将无限期地继续支持 Python 2解释器,但 Python 开发的主流最终将继续前进。流行的库和框架大多已经删除,或者正在删除对 Python 2的支持(例如,Django 最后支持 Python 2 的1.11 LTS(最初于2017年发布)其上游支持已于4月结束)。作者简要回顾并探讨了 Python 2之后的变化和发展。

后端软件架构清单:如何从头开始构建产品

当你一大早醒来突然有了一个很好的商业点子时,你可能会迫不及待开始构建你的产品软件。从头开始构建软件架构涉及很多事情,你可能会完全忘记某些部分。在产品周期的后期,这些可能会是你的坑。这篇文章中的清单列举了你在首次部署前需要考虑的事项。因此,在不进行进一步构建的情况下,这是从头开始为产品构建后端结构时应检查的清单。这些清单包括:

  • 针对你的项目,选择正确的语言和框架
  • 实现身份验证和授权微服务
  • 创建一个抽象基类模型,以供数据库中的所有其他模型继承
  • 设置通知微服务
  • 设置错误日志记录
  • 实现请求响应和应用程序的日志记录
  • 在你的 API 中引入限制(throttling)和对应用程序服务器进行速率限制
  • 从第一天开始就建立和配置异步通信
  • 设置定时任务
  • 正确管理你的密码(参数文件)
  • 从第一天开始就对 API 进行版本控制
  • 确定前端客户端的硬更新和软更新版本检查
  • 从第一天开始就引入持续集成(CI)
  • 启用容器支持
  • 使用应用程序监控工具
  • 使用 ElasticSearch 在客户端应用程序中增强应用程序范围内的搜索
  • 在生产服务器中设置防火墙

🏢 项目,软件包和代码

GIMP-ML:GIMP的机器学习Python插件集。

Rich:Rich是一个Python库,用于在终端中显示富文本和精美格式。

📚 书籍

程序员修炼之道(第2版)──通向务实的最高境界

《The Pragmatic Programmer》第一版出版于1999年,距今已有20年,出版后,对于软件工程实践产生了很大影响。该书作者是 Andrew Hunt 和 David Thomas,他们都是敏捷宣言的17个创始者之一。Andrew 还是敏捷联盟(Agile Alliance)的创始人。David 则是著名的 DRY(Don't Repease Yourself) 一词的发明者。在时隔二十年之后重新修订出版本书,作者对于其内容作了不少调整,这些调整反映了他们在这二十年中所获得的新的认知,也反映了时代变迁。

── 摘自 https://zhuanlan.zhihu.com/p/79435147

📺 音视频

ThoughtWorks - Python的未来

企业对机器学习的日益重视也使人们对 Python 产生了浓厚的兴趣。是什么使 Python 与其他语言不同?使其具有独特性的主要功能是什么?Python 以后的发展将会是怎样?在本集中,我们的播客与来自ThoughtWorks Brazil 的 Luciano Ramalho(著名的Python书籍作者)进行了交谈,内容涉及魔术方法(dunder methods),快速失败(fast fail)以及即将发行的第二版《流畅的 Python》中新增的功能。

☕ 关注我们

RSS 订阅:PythonWeekly RSS

Python 周报 #1 | 2020.05.03

02 May 16:24
Compare
Choose a tag to compare

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

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

🗞️ 新闻

Python 2最终版本标志着时代的终结

原文链接:The final Python 2 release marks the end of an era

Python 2的最终版本(2.7.18)已发布。随着 Python 社区对新时代的期待,Stack Overflow 博客的 Ryan Donovan 花了一些时间来思考这种转变,并指出,尽管官方渠道对 Python 2 的支持可能已经消失,但该语言并没有消亡。实际上,有理由相信它会持续数十年。

你需要知道的 Python 3.9 的新特性

原文链接:New Features in Python 3.9 You Should Know About

Python 3.9 计划于2020年5月10日发布,其中包含许多新特性。在 Martin Heinz 的概述中探索这些新特性,包括新的字典(dcit)运算符,对数学模块的更新,新的字符串方法,functools.TopologicSorter 类等等!

📝 文章和教程

在 Python 应用程序中使用配置的最佳实践

原文链接:Best Practices for Working with Configuration in Python Applications

用户喜欢能够配置应用程序。但是处理用户配置意味着解析不受信任的输入,验证该输入,并弄清楚如何在应用程序的所有层中安全地访问这些配置。Python 具有丰富的配置生态系统。许多文章集中于如何在 Python 程序中使用各种配置格式,而省略了有关如何以及何时验证配置的更详细的信息。本教程填补了其中的一些空白。

TCP重置攻击如何工作?

原文链接:How does a TCP Reset Attack work?

TCP重置攻击使用单个数据包执行,大小不超过几个字节。由攻击者制作和发送的欺骗性 TCP 段,诱骗两个受害者放弃 TCP 连接,中断他们之间可能至关重要的通信。

在这篇文章中,我们将要:学习 TCP 协议的基础知识,了解攻击的工作原理,并使用简单的 Python 脚本对自己进行攻击。

Python pickle 模块:如何在 Python 中保存对象

原文链接:The Python pickle Module: How to Persist Objects in Python

在本教程中,你将学习如何使用 Python pickle 模块将对象转换为字节流,该字节流可以保存到磁盘或通过网络发送。你还将学习对不受信任来源的对象使用此过程的安全隐患。

在 Rust 代码中写 Python

原文链接:

这个系列的文章介绍了作者 Mara Bos 如何从0开始写库 inline-python 的过程,这个库支持使用宏 python!{ .. } 在 Rust 代码中直接写 Python 代码。

Python 中类型提示的状态

原文链接:the state of type hints in Python

Python是并且将继续是一种动态语言。然而,Python 已经存在25年了,现在有了一种语言标准,即如何在语言中添加类型信息。从那时起将近三年过去了,在此博客文章中,BERNAT GABOR 将探讨系统的发展方向。

📚 书籍

Springer 发布50本免费编程书籍

包括有关 Python,机器学习,深度学习,人工智能等书籍。

📺 音视频

Python Bytes - Episode #179: Guido van Rossum drops in on Python Bytes

Python 语言创造者 Guido van Rossum 作客 Python Bytes。

Real Python - Episode 7: AsyncIO + Music, Origins of Black, and Managing Python Releases

通过示例了解更多有关 Python 中的 AsyncIO 的信息,在该示例中你可以查看和听到实时触发的事件。Christopher 本周采访了 ŁukaszLanga。Łukasz 为 PyCon 2020 创建了一个关于将 AsyncIO 与音乐结合使用的演讲。在此演讲中,他展示了协程,gathering,事件循环和触发事件以创作音乐的现场示例。他们谈论了他作为 Python 3.8和3.9发布管理器的角色。他还提供了非常流行的,毫不妥协的代码格式化程序 Black 的起源以及它可以解决的组织内部问题类型的背景知识。

Łukasz 之前在 Facebook 工作,在那里他创立了 Black。他谈到最近搬回波兰。Łukasz讨论了他目前在 Edge DB 上的工作,建立了新一代的对象关系数据库。

☕ 关注我们

RSS 订阅:PythonWeekly RSS