thumbnail
图表即代码:使用 Diagrams 制作云系统架构原型图
一、前言 昨天发现了一款非常不错的云系统架构原型图制作库 Diagrams,通过它,我们便可以使用代码的方式绘制诸如阿里云、AWS、Azure、K8S 等系统架构原型图。 相比于在 UI 上对各种图标进行拖拽和调整,这种方式更符合我们程序员的使用习惯。 本文不仅要介绍下这个库,也想说说我是如何参与到这个库中以支持阿里云资源。 二、安装 Diagra…
thumbnail
Python 命令行之旅:argparse、docopt、click 和 fire 总结篇
一、前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse、docopt、click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变。 本文作为本次旅程的终点,希望从一个更高的视角对这些库进行横向对比,总结它们的异同点和使用场景,以期在应对不同场景时能够分析利弊,选择合适的库为己所用。 本系…
thumbnail
一行命令自动带上口罩
前言 2019 年底开始蔓延的新型肺炎疫情牵动人心,作为个体,我们力所能及的就是尽量待在家中少出门。 看到一些朋友叫设计同学帮忙给自己的头像戴上口罩,作为技术人,心想一定还有更多人有这样的诉求,不如开发一个简单的程序来实现这个需求,也算是帮助设计姐姐减少工作量。 于是花了些时间,写了一个叫做 face-mask 的命令行工具,能够轻松的给图片中的人…
一文掌握 Python 中的 “is” 和 “==”
引言 Python 的 "is" 和 "==" 想必大家都不陌生,我们在比较变量和字面量时常常用到它们,可是它们的区别在哪里?什么情况下该用 is?什么情况下该用 ==?这成了不少人心中的困惑。 当我们判断一个变量是否为 None 时,通常会用 is: >>> a = None >>>…
Python 命令行之旅:使用 fire 实现 git 命令
一、前言 在前面三篇介绍 fire 的文章中,我们全面了解了 fire 强大而不失简洁的能力。按照惯例,我们要像使用 argparse、docopt 和 click 一样使用 fire 来实现 git 命令。 本文的关注点并不在 git 的各种命令是如何实现的,而是怎么使用 fire 去打造一个实用命令行程序,代码结构是怎样的。因此,和 git 相…
Python 命令行之旅:深入 fire(二)
一、前言 在上一篇文章中我们介绍了 fire 的子命令、嵌套命令和属性访问等内容,今天我们将继续深入了解 fire 的其他功能。 本系列文章默认使用 Python 3 作为解释器进行讲解。 若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~ 二、功能 2.1 最简命令实现 在上一节中,我们介绍了只要定义一个函数就可以实现命令行程序…
Python 命令行之旅:深入 fire(一)
一、前言 在第一篇“初探 fire”的文章中,我们初步掌握了使用 fire 的简单步骤,了解了它 Pythonic 的用法。 今天我们将深入了解 fire 的子命令、嵌套命令和属性访问功能。 本系列文章默认使用 Python 3 作为解释器进行讲解。 若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~ ...
Python 命令行之旅:初探 fire
一、前言 在本系列前面所有文章中,我们分别介绍了 argparse、docopt 和 click 的主要功能和用法。它们各具特色,都能出色地完成命令行任务。argparse 是面向过程的,需要先设置解析器,再定义参数,再解析命令行,最后实现业务逻辑。docopt 先用声明式的语法定义出参数,再过程式地解析命令行和实现业务逻辑。click 则是用装饰…
Python 命令行之旅:使用 click 实现 git 命令
前言 在前面五篇介绍 click 的文章中,我们全面了解了 click 的强大能力。按照惯例,我们要像使用 argparse 和 docopt 一样使用 click 来实现 git 命令。 本文的关注点并不在 git 的各种命令是如何实现的,而是怎么使用 click 去打造一个实用命令行程序,代码结构是怎样的。因此,和 git 相关的操作,将会使用…
Python 命令行之旅:深入 click(四)
前言 在前面三篇文章中,我们介绍了 click 中的参数、选项和命令,本文将介绍 click 锦上添花的功能,以帮助我们更加轻松地打造一个更加强大的命令行程序。 本系列文章默认使用 Python 3 作为解释器进行讲解。 若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~ 增强功能 Bash 补全 Bash 补全是 click 提…