大家好,欢迎来到 Crossin 的编程教室。
如果你参与过团队开发,那么很可能遇到过这些尴尬场面:
有人喜欢用单引号,有人坚持双引号
有人缩进4个空格,有人非要用tab
函数参数太多要不要换行?换几行?怎么对齐?
列表、字典的元素末尾要不要加个逗号?
……
以至于每次代码合入 master 前,都要花大量时间调整,最后 review 里一半评论都在讨论代码格式上。
今天介绍的这个工具:black,就是要为开发者省下这些时间。
设计哲学
Black 被称作“强硬的代码格式化工具”(The uncompromising code formatter)。
它的设计理念是:
我就是标准,就按我设定的来,不要把时间和注意力花在这些细节上。
Black 几乎不给你配置选项!
想改行长?默认就是 88,别问为什么
想用单引号?对不起,双引号才是正义
想控制括号怎么折行?抱歉,我说了算
甚至默认直接覆盖原文件
这种“偏执”保证了,经过 Black 格式化的同一份的代码,在你的电脑、我的电脑、服务器上都一模一样,连一个空格都不差。
主要规则
Black 对于代码的格式化规则主要包括:
使用方法
要使用 Black 很简单,用 pip 命令就可以安装:
最简单,也是用得最多的就是一条命令:格式化整个项目
可以一次指定多个文件或目录:
black file1.py file2.py dir1 ...
其他常用参数:
检查有没有需要改动的文件,但不修改:--check
输出改动结果,但不修改源文件:--diff
设定一行最大宽度(默认 88):-l, --line-length
设定并行进程数量:-W, --workers
IDE 支持
几乎主流的 IDE 都有支持 Black 的插件或功能,比如 VS Code 的 Black Formatter,PyCharm 的 BlackConnect,Vim、Emacs、SublimeText 也都有成熟插件。安装之后,保存即格式化,而 Black 的格式化速度也很快,非常丝滑。
对于 Jupyter Notebook,Black 更是原生支持,直接 black xxx.ipynb 就可以进行格式化。
如今,包括 Django、FastAPI、HuggingFace、Pandas、Flask、HTTPX 在内的众多开源项目或商业产品都广泛采用 Black。
Black 的目的不在于帮你把代码整理得更好看,而是要帮你节省时间、减少内耗,不用纠结于格式细节,而把精力更多投入在代码本身之上。对于团队开发来说,也就是节省了成本。
对于代码格式化,你有什么要说的?欢迎评论区留言讨论。
如果本文对你有帮助,欢迎点赞、评论、转发。你们的支持是我更新的动力~
添加微信 crossin123 ,加入编程教室共同学习~