Python 語言的自動(dòng)格式化工具
每種編程語言都有自己專屬的格式化工具,比如 golang 語言的 gofmt,JavaScript 語言的 prettier,php 語言的 php-cs-fixer,和這些編程語言類似,python 也有自己的自動(dòng)化格式工具,不過不同的是,它有很多個(gè)格式化工具,接下來我們就來看看這些不同的格式化工具究竟有什么不同。
autopep8
這個(gè)是最早的 python 格式化代碼工具,它采用 pycodestyle 來分析代碼,然后對(duì)于不符合 pep 風(fēng)格的代碼進(jìn)行修復(fù)。同時(shí),它還會(huì)修復(fù)一些已經(jīng)棄用的代碼,并且規(guī)范代碼的結(jié)尾,對(duì)于一些方法和函數(shù)添加一些空行分隔符。
autopep8 是支持通過配置文件進(jìn)行格式化聲明的,它支持。cfg,.ini .pep8 .flake8 等格式的配置文件。目前他在 github 上有 4200 多個(gè)點(diǎn)贊。
yapf
這是一個(gè)谷歌推出的格式化工具,因?yàn)橛写髲S背書,所以它發(fā)展的很快,目前在 github 上有 13000 個(gè)點(diǎn)贊。他不會(huì)檢查 pep 準(zhǔn)則,它只會(huì)格式化代碼。它采取的是類似于??clang-format?
?的思想,就是讀取整個(gè)文件代碼,然后格式化成最佳的格式。
它是一個(gè)可配置的代碼格式方案,不同的配置會(huì)導(dǎo)致不同的格式化結(jié)果,目前主流的配置有 pep8,google,facebook,chromium 等。此外,它還支持自定義配置方案,通過??--style?
?即可指定格式樣式。
上面雜亂無章的代碼經(jīng)過??yapf?
?格式化后,就會(huì)變得很規(guī)整,更加容易閱讀。
black
black 是最近幾年新推出的 python 代碼格式化工具,雖然是最新推出的,然而它卻是最受歡迎的,目前它在 github 上的點(diǎn)贊是 30000 多。
black 號(hào)稱毫不妥協(xié)的代碼格式化工具。也就是說,它默認(rèn)不許你也不需要你手動(dòng)進(jìn)行代碼格式的細(xì)節(jié)調(diào)整。
它具有非常高效的速度,并且被很多項(xiàng)目所采用。
Black 擁有全面的測(cè)試套件,具有高效的并行功能測(cè)試,
下面是使用 black 的一些組織:Facebook,Dropbox,KeepTruckin,Mozilla,Quora, Duolingo,QuantumBlack,Tesla,Archer Aviation。
你可以看到,非常多的著名公司使用它來格式化 python 代碼,只因?yàn)樗糜昧?,太方便了?/p>
總結(jié)
autopep8 幾乎已經(jīng)被放棄了,這從 github 上的點(diǎn)贊數(shù)就可以看出來,yapf 具有更加靈活的,高度定制化的格式化方案,而 black 則讓程序看起來更加統(tǒng)一和優(yōu)雅,并且可以避免復(fù)雜的配置。
如果你公司或者你正在使用 python 進(jìn)行項(xiàng)目的開發(fā),那么選擇一款代碼格式化工具是非常必要的,它可以讓你的開發(fā)團(tuán)隊(duì)節(jié)省大量時(shí)間。而且無論是你的個(gè)人代碼還是其他人的代碼格式看起來都是一樣的,這樣每個(gè)人閱讀其他人的代碼都會(huì)是一件幸福的事情。