背景
(相关资料图)
前段时间看了一下 MySQL 官方的开源项目,发现它点名了要用"Block" 来格式化代码;难不成这货比 autopep8 还要出众?以下是 MySQL 官方的原文,于是我真的去试用了一下 Black 发现真香!
安装
Black 是一个 Python 的软件包,并且已经发布到了 pypi ,也就是说我们可以直接通过 pip 来安装它。
pip3installblack
安装完成之后我们可以得到一个叫black 的命令。
Black 的哲学
black 项目的开发人员已经把 pep8(Python 官方在这个 pep 里定义了 Python 代码的推荐风格)深刻理解了;black 会以 pep8 为蓝本来校验我们的代码,一旦发现与标准不一定的地方就直接把代码改成一致。
正是由于它这种直接改我源代码的处事风格,让我节约了不少时间。也就是说开发人员无法选择是否接受 black 的风格改进,这就有了另一个好处,那就是有了一个天然的、统一的标准,这样所有人的代码风格都是一致的。
来一个最小化的例子感受一下。
print("helloworld");
以一个被 back 教育过多次的人来说,这一行代码有两处风格与 black 冲突;1. 它用了单引号 2. 不应该有分号。对于这种短小的代码,我们可以直接传递给 black 处理就像下面这样。
echo "print("hello world");" | black -
print("hello world")
reformatted-
All done! ✨ ✨
1 file reformatted.
我敢保证上面这个是 black 最没用的例子了,因为在真正的项目里面我们有更加好的使用方法。
手工格式化
打个比方,我想要格式化的 Python 代码位于 dbm-agent 项目的 dbma 目录下,那我就可以这样一行命令完成它的格式化。
cddbm-agent
black dbma
reformatted /data/repos/dbm-agent/dbma/components/mysql/views/handlers.py
reformatted /data/repos/dbm-agent/dbma/components/mysql/views/defaultsview.py
All done! ✨ ✨
2 files reformatted, 34 files left unchanged.
可以看到 dbma 目录下有两个文件与 black 的风格有冲突,都被它格式化了。虽然这个已经比较方便了,但是这种重复劳动最好还是让 IDE 来做。
VSCode自动格式化
我们可以让 vscode 在保存文件的时候,先格式化后再保存。这样我们只要配置一次,就能完全解决代码风格问题。
1. 打开 format-on-save 。
2. 指定 Python 代码的格式化器为 black 。
就是这么简单,现在 vscode 已经能自己用 black 帮我们格式化代码了。
Black是名门之后
一开始我想 black 应该也就是一个普普通通的项目吧,没有想到它的背书这么硬!它来自于 《Python Software Foundation》这个基金会就是开发 requests 项目的那个基金会。
最后
都到这里了,是时候图穷匕见了!我这人比较 real 就直说了,我想涨粉帮忙点下关注!我的技术文章质量还可以,关注应该不亏。
另外 “在看” +“分享” +“点赞”+“收藏”也是我继续写下去的动力;再次感谢!!!
标签: