YAPF:Google開源的Python代碼格式化工具

來源:互聯網
上載者:User

標籤:

 

點這裡

現在的大多數 Python 代碼格式化工具(比如:autopep8 和 pep8ify)是可以移除代碼中的 lint 錯誤。這顯然有些局限性。比如:遵循 PEP 8 指導的代碼可能就不會被格式化了,但這並不說明代碼看起來就舒服。

譯註:lint 是最著名的C語言工具之一,是由貝爾實驗室SteveJohnson於1979在PCC(PortableC Compiler)基礎上開發的靜態程式碼分析,一般由UNIX系統提供。與大多數C語言編譯器相比,lint可以對程式進行更加廣泛的錯誤分析,是一種更加嚴密的編譯工具。最初,lint這個工具用來掃描C源檔案並對來源程式中不可移植的代碼提出警告。但是現在大多數lint公用程式已經變得更加嚴密,它不但可以檢查出可移植性問題,而且可以檢查出那些雖然可移植並且完全合乎文法但卻很可能是錯誤的特性。

但 YAPF 獨闢蹊徑。它脫胎於由 Daniel Jasper 開發的 clang-format。大體上來說,這個演算法擷取代碼,然後把初始代碼重新編排,即便初始代碼並沒有違背規範,也可使其達到遵循代碼規範的最佳格式。這個理念和 Go 語言中的 gofmt 工具相似,終結關于格式的各種“聖戰”。如果一個項目的程式碼程式庫,無論何時修改,通過 YAPF 最佳化後,代碼風格可統一,在每次 code review 中,也就沒有必要爭論風格了。

YAPF 的終極目標是產生和遵循代碼規範的程式員寫出的一樣的代碼。可幫你減少維護代碼的苦差事。

YAPF 支援 Python 2.7 和 3.4+。

用法

1234567891011121314151617 usage: yapf [-h] [--style STYLE] [-d | -i] [-l START-END | -r] ... Formatter for Python code. positional arguments:  files optional arguments:  -h, --help            show this help message and exit  --style STYLE         specify formatting style: either a style name (for                        example "pep8" or "google"), or the name of a file                        with style settings. pep8 is the default.  -d, --diff            print the diff for the fixed source  -i, --in-place        make changes to files in place  -l START-END, --lines START-END                        range of lines to reformat, one-based  -r, --recursive       run recursively over directories

 

樣本

美化前:

1234567891011121314 = {  ‘a‘:37,‘b‘:42, ‘c‘:927} = ‘hello ‘‘world‘= ‘hello ‘+‘world‘= ‘hello {}‘.format(‘world‘)class foo  (     object  ):  def f    (self   ):    return       37*-+2  def g(self, x,y=42):      return ydef f  (   a ) :  return      37+-+a[42-x :  y**3]

美化後:

123456789101112131415 = {‘a‘37‘b‘42‘c‘927} = ‘hello ‘ ‘world‘= ‘hello ‘ + ‘world‘= ‘hello {}‘.format(‘world‘) class foo(object):    def f(self):        return 37 * -+2     def g(self, x, y=42):        return y def f(a):    return 37 + -+a[42 - x:y ** 3]

詳情請參考下方的 Github 連結。

GitHub:https://github.com/google/yapf

YAPF:Google開源的Python代碼格式化工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.