我为什么不喜欢 black

作者给black的定义是「The Uncompromising Code Formatter」,也就是「不妥协的代码格式化程序」。什么意思呢,一句话: 你要听它的,由black按照它的审美帮助你处理代码格式问题。但我不喜欢里面的一些规则

阅读全文 〉

functools.singledispatchmethod(Python 3.8)

functools模块里面的函数是非常常用和有用的,凡是这个模块新增的内容都是值得了解的。这篇文章将介绍Python 3.8新增的singledispatchmethod。写这篇文章前我还特意搜了一些知名/主流项目、开发者、组织,绝绝大多数都没有用它。那把它放在标准库且是在一个很重要的模块里面的重要意义是什么呢?

阅读全文 〉

深入理解asyncio(二)

在上篇文章已经看到多次用asyncio.gather了,还有另外一个用法是`asyncio.wait`,他们都可以让多个协程并发执行。那为什么提供2个方法呢?他们有什么区别,适用场景是怎么样的呢?其实我之前也是有点困惑,直到我读了asyncio的源码。我们先看2个协程的例子:

阅读全文 〉

深入理解asyncio(一)

这几天看asyncio相关的pycon视频又重温了asyncio 的官方文档,收获很多。之前asyncio被吐槽的一点就是文档写的不好,Python 3.7 时 asyncio 的官方文档被 Andrew Svetlov 以及 Yury Selivanov 等核心开发者重写了,新的版本我觉得已经好很多了。在这里记录一下我对asyncio的一些理解。

阅读全文 〉

PEP572: 海象运算符

现在已经是Python 3.8的最后一个alpha版本,接着就是本月底要发布的的3.8.0 beta 1了。按规定,3.8已经不会再添加(修改)功能了,之前非常有争议的PEP 572的实现已经算是很固定了,我们这篇文章就来先尝个鲜。看看这个新的`赋值表达式`语法怎么用,何时用。

阅读全文 〉

神奇的 f-strings

Python 3.6新增了f-strings,这个特性叫做`字面量格式化字符串`,F字符串是开头有一个f的字符串文字,Python会计算其中的用大括号包起来的表达式,并将计算后的值替换进去。通过本文,希望和你达成一个共识:如果你的项目或者工作中使用的Python版本已经不小于3.6,f-string格式化是首选方式,不仅在保持功能强大的同时语义上更容易理解,而且性能也有较大的提升

阅读全文 〉

2018年度Python榜单

2018 年马上就要结束了,让我们一起见证全世界 Python 的这一年。今年的榜单功能和去年相差不大,如果你看过去年榜单能够体会几个小改动,太忙了,也许明年能改版一下。榜单内容和去年有了一些区...

阅读全文 〉

from __future__ import annotations

最近做了一些豆瓣的产品业务代码的 Python 3 迁移相关的准备工作。首先当然是要去改那些基础 Model,除了代码符合 Python3 语法要求,这种基础的、核心的代码也要加上类型注解,结果...

阅读全文 〉

消失的结石

先申明这不是一篇技术文章,只是用叙事的方式讲述我这 2 个礼拜由于结石住院的始末。结石是一种很常见的泌尿系统疾病,我认识的不少人都有过结石,我的感觉里面程序员或者说互联网从业者会更容易得这个病,...

阅读全文 〉