首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >最火的 Python 代码格式化工具 Black

最火的 Python 代码格式化工具 Black

作者头像
初代庄主
发布2023-04-20 19:09:25
发布2023-04-20 19:09:25
1K00
代码可运行
举报
文章被收录于专栏:初代庄主初代庄主
运行总次数:0
代码可运行

背景

前段时间看了一下 MySQL 官方的开源项目,发现它点名了要用 "Block" 来格式化代码;难不成这货比 autopep8 还要出众?以下是 MySQL 官方的原文,于是我真的去试用了一下 Black 发现真香!


安装

Black 是一个 Python 的软件包,并且已经发布到了 pypi ,也就是说我们可以直接通过 pip 来安装它。

代码语言:javascript
代码运行次数:0
运行
复制
pip3 install black

安装完成之后我们可以得到一个叫 black 的命令。


Black 的哲学

black 项目的开发人员已经把 pep8(Python 官方在这个 pep 里定义了 Python 代码的推荐风格) 深刻理解了; black 会以 pep8 为蓝本来校验我们的代码,一旦发现与标准不一定的地方就直接把代码改成一致

正是由于它这种直接改我源代码的处事风格,让我节约了不少时间。也就是说开发人员无法选择是否接受 black 的风格改进,这就有了另一个好处,那就是有了一个天然的、统一的标准,这样所有人的代码风格都是一致的。

来一个最小化的例子感受一下。

代码语言:javascript
代码运行次数:0
运行
复制
print('hello world');

以一个被 back 教育过多次的人来说,这一行代码有两处风格与 black 冲突;1. 它用了单引号 2. 不应该有分号。对于这种短小的代码,我们可以直接传递给 black 处理就像下面这样。

代码语言:javascript
代码运行次数:0
运行
复制
echo "print('hello world');" | black -

print("hello world")
reformatted -
All done! ✨ 🍰 ✨
1 file reformatted.

我敢保证上面这个是 black 最没用的例子了,因为在真正的项目里面我们有更加好的使用方法。


手工格式化

打个比方,我想要格式化的 Python 代码位于 dbm-agent 项目的 dbma 目录下,那我就可以这样一行命令完成它的格式化。

代码语言:javascript
代码运行次数:0
运行
复制
cd dbm-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 项目的那个基金会。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 初代庄主 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档