Python 是当今使用最流行的编程语言之一——原因也很充分:它是开源的,用途广泛(例如 Web 编程、商业应用、游戏、科学编程等等),并且拥有充满活力和专注的社区支持。正是这个社区让我们在 Python 包索引 (PyPI) 中拥有如此庞大而多样的软件包,以扩展和改进 Python 并解决不可避免出现的小故障。
在本系列文章中,我们将介绍七个可以帮助您解决常见 Python 问题的 PyPI 库。在第一篇文章中,我们了解了 Cython;今天,我们将研究 Black 代码格式化工具。
Black
有时创造力是一件美好的事情。 有时它只是一种痛苦。 我喜欢创造性地解决难题,但我希望我的 Python 代码格式尽可能一致。 从来没有人对使用“有趣”缩进的代码印象深刻。
但比格式不一致更糟糕的是代码审查只包含格式细节。 这对审查者来说很烦人——对代码被审查的人来说更烦人。 当你的 linter 告诉你你的代码缩进不正确,但没有提示正确的缩进量时,也会让人非常恼火。
Black 登场了。 Black 不是告诉你该怎么做,而是一个好的、勤劳的机器人:它会为你修复你的代码。
要了解它的工作原理,请随意编写一些漂亮的不一致的代码,例如
def add(a, b): return a+b
def mult(a, b):
return \
a * b
Black 会抱怨吗? 当然不会,它只会为你修复它!
$ black math
reformatted math
All done! ✨ ? ✨
1 file reformatted.
$ cat math
def add(a, b):
return a + b
def mult(a, b):
return a * b
Black 确实提供了失败而不是修复的选项,甚至可以输出 diff 样式的编辑。 这些选项在持续集成 (CI) 系统中非常有用,该系统强制在本地运行 Black。 此外,如果 diff 输出被记录到 CI 输出中,在您需要修复输出但无法在本地安装 Black 的极少数情况下,您可以直接将其粘贴到 patch 中。
$ black --check --diff bad
--- math 2019-04-09 17:24:22.747815 +0000
+++ math 2019-04-09 17:26:04.269451 +0000
@@ -1,7 +1,7 @@
-def add(a, b): return a + b
+def add(a, b):
+ return a + b
def mult(a, b):
- return \
- a * b
+ return a * b
would reformat math
All done! ? ? ?
1 file would be reformatted.
$ echo $?
1
在本系列文章的下一篇中,我们将介绍 attrs,一个可以帮助您快速编写简洁、正确代码的库。
3 条评论