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