Python 是当今使用最流行的编程语言之一,这有充分的理由:它是开源的,它有广泛的用途(例如 Web 编程、商业应用程序、游戏、科学编程等等),并且它有一个充满活力和专注的社区支持它。这个社区是我们拥有如此庞大、多样化的软件包范围的原因,这些软件包在Python 包索引 (PyPI) 中可用,以扩展和改进 Python 并解决不可避免出现的小故障。
在本系列文章中,我们将研究七个 PyPI 库,它们可以帮助您解决常见的 Python 问题。在第一篇文章中,我们了解了 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 风格的编辑。这些选项在强制在本地运行 Black 的持续集成 (CI) 系统中非常有用。此外,如果 diff 输出被记录到 CI 输出中,您可以直接将其粘贴到 patch 中,以防您需要修复输出但无法在本地安装 Black 的罕见情况。
$ 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 条评论