argparse 的高级用法

argparse 的高级用法

Python 里的 argparse 大家都不陌生,是用来解析命令行参数的标准库,它的用法大致是这样: 这非常地平凡,如果用 click 的话,可以更快地写出来相同的功能: 两者的区别在于 argparse 是统一解析得到参数值再自己处理,而 click 可以直接把参数值传给装饰的函数。后者的方式更有利于代码解耦,更容易维护。 我在做 PDM 的时候最初也是选择的click,PDM 的命令行有一系列的子命令,而 click 的嵌套命令组(click.Group)也提供了强大的支持,帮助我很好地完成了这个工作。 然而当我更深入地写下去,试图加一些更复杂的功能时,我发现了 click 的不足之处,并促使我最终选择了 argparse,到目前看来 argparse 提供的能力能很好地胜任工作。

Keep reading

PyCon China 2021 演讲——Python 打包 101

PyCon China 2021 演讲——Python 打包 101

我在今年的PyCon China 2021上在线做了一个演讲,题目是「Python 打包 101」。Python 打包是个每个 Python 开发都可能用到并且需要了解的知识。演讲试图从 Python 打包的历史进程开始,阐述 pip install…

Keep reading

再谈 Python 中的继承(译)

本文是 Subclassing in Python Redux 的中文版。在阅读的过程中,我发现与我的「友好的 Python」不谋而合,故向作者请求翻译此文。版权归原作者 Hynek Schlawack 所有。除非特别说明,本文所有的「我」均指原作者 Hynek。

Keep reading

友好的 Python:接口友好

友好的 Python:接口友好

Photo by Samuel Sianipar on Unsplash 前言 上一篇说到写代码要对开发者、接手者友好,需要让程序扩展起来比较容易,实现「高内聚」。同样地,对用户来说,程序使用起来是否友好也是决定了他用不用你的软件的一大要素。本文我们就先说一说其中的一种使用情形:作为上游库对下游提供接口(API)。

Keep reading

友好的 Python:扩展友好

友好的 Python:扩展友好

Photo by ConvertKit on Unsplash 时隔两个月没有更新博客,这次准备来个专题「友好的 Python」。虽然我脑海中想好了几个主题,但具体写什么还不知道,这个系列能写几篇也不知道。构思一篇博客真的是太难了,至少对我这种懒人来说。

Keep reading

重新思考自定义容器类的实现

随便水一篇「雕虫小技」,想到哪算哪。读本文前假设已读过这篇文章 在 Python 中如何编写一个自定义的字典类?大家可能被告诉要使用collections.abc中的类作为基类而不是dict。dict也不是任何时候都不能做基类——当你没有重载任何内建方法时可以直接继承dict…

Keep reading

自建、免费、开源的评论系统解决方案

自建、免费、开源的评论系统解决方案

我最近把评论系统切换到了Cusdis,这是一个非常年轻的项目,我是看着 GitHub Repo 从建立到现在近 900 个 star 的。产品体验不错,在开源协作的过程中也有很多收获,觉得有必要推荐一下,并且介绍下自己用的 workflow…

Keep reading

我最近做开源的体会

最近每天早上醒来的第一件事就是看邮件,做开源这么久,好像突然变忙起来了,之前从来没有过的分身乏术的感觉也涌现了出来。 有段时间不写博客,就会浑身难受,实在没写的就更新下近况。― laixintao 那就水篇文章来谈谈我最近做开源的体会吧。 一个性能非常拉垮的 Markdown…

Keep reading