Google的Python代碼格式化工具YAPF詳解

來源:互聯網
上載者:User

標籤:

  平時習慣了雜亂無章地編寫代碼,而最後的代碼勘定,卻依賴於PyCharm內建的格式化工具,以及根據其內建的提示功能來規範代碼。而pycharm裡的格式化工具,不支援對多檔案進行代碼批量格式化,曾經嘗試些解決方案,結果無功而返,不了了之。今天看到這個工具,終於有望了。

# 本地小試
cd /home/kylin/program
git clone https://github.com/google/yapf.git
PYTHONPATH=/home/kylin/program/yapf/ python /home/kylin/program/yapf/yapf -h

......

 

  以下轉載於網路對原文的翻譯:http://geek.csdn.net/news/detail/29735

 

介紹

目前用於Python的格式化程式(如autopep8和pep8ify)都用於刪除代碼中的lint錯誤。這有很明顯的局限性。

YAPF採用了不同的方法,基於Daniel Jasper開發的“‘clang-format”。從本質上來說,該演算法取走代碼並重新排版,以符合樣式指南的最佳格式,即便原始代碼沒有違反樣式指南。這個想法也是類似於Go程式設計語言的gofmt工具。

其最終目標是讓YAPE所產生的代碼可以與程式員所寫的代碼一樣好(前提是程式員遵循樣式指南),它取代了一些維護代碼的苦差。

安裝

如果你打算使用YAPF作為一個命令列工具,而不是一個庫,那麼安裝是沒有必要的。通過Python解譯器,YAPF可以作為一個目錄運行。如果你複製/解壓YAPF到DIR,可以這麼運行:

$ PYTHONPATH=DIR python DIR/yapf [options] ...

Python版本

YAPF支援Python2.7和3.4+。

用法

設定:

格式樣式

使用YPF的格式樣式是可以配置的,並且有許多“knobs”可用於調整YAPF是如何做格式的。(查看style.py模組)

為了控制樣式,運行帶有--style的YAPF。它接受一個預定義的樣式(例如pep8或google)——一個通往設定檔(能指定所需樣式或一個鍵/值對的字典)的途徑。

設定檔是一個簡單的鍵=值對的列表(區分大小寫),擁有一個【style】,例如:

當然也可以通過字典在命令列上做出同樣的事情,例如:

--style=‘{basedonstyle: google, indent_width: 4}‘

這將用google作為基礎樣式,並修改成擁有4個空格縮排。

案例

通過YAPF,可以將下面這段代碼:

重新格式化成:

常見問題

為什麼YAPF破壞了我很棒的格式?

對於一些代碼,它不會比手動格式好,特別是大的資料文字,在YAPF下會變得更糟糕。引起這些的原因是多樣的,但是從本質上來說,YAPF只是一個協助開發的簡單工具,它將事物與樣式指南保持一致,但這並不等於可讀性。

為減輕這種情況,你需要表明YAPF重新格式化時需要忽視的地區:

你也可以禁用格式單一的字面,例如:

為什麼不改善現有的工具?

現有的工具要考慮到不同的目標,並需要大量的修改轉換以便使用clang-format演算法。我們希望使用clang-format重組演算法。

我可以在程式中使用YAPF嗎?

答案是肯定的!YAPF被設計用於作為一個庫以及一個命令列工具來使用。這意味著使用YAPF時,一個工具或IDE外掛程式是免費的。?

註:更多詳細內容可在GitHub上擷取,點此進入。

Google的Python代碼格式化工具YAPF詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.