国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Google開源的Python格式化工具YAPF的安裝和使用教程

2019-11-25 16:46:14
字體:
供稿:網(wǎng)友

目前用于Python的格式化程序(如autopep8和pep8ify)都用于刪除代碼中的lint錯誤。這有很明顯的局限性。
YAPF采用了不同的方法,基于Daniel Jasper開發(fā)的“'clang-format”。從本質(zhì)上來說,該算法取走代碼并重新排版,以符合樣式指南的最佳格式,即便原始代碼沒有違反樣式指南。這個想法也是類似于Go編程語言的gofmt工具。
其最終目標(biāo)是讓YAPE所產(chǎn)生的代碼可以與程序員所寫的代碼一樣好(前提是程序員遵循樣式指南),它取代了一些維護(hù)代碼的苦差。

安裝
可以直接通過pip進(jìn)行安裝:

pip install yapf

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

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

YAPF的使用
安裝完成之后,就可以直接在命令行中使用了。 以下是yapf的命令行參數(shù):

usage: yapf [-h] [--style STYLE] [-d | -i] [-l START-END | -r] ...
Formatter for Python code.positional arguments: filesoptional arguments: -h, --help   顯示幫助信息 --style STYLE   指定需要格式化的編程風(fēng)格,如pep8或者google等      也可以是自定義的設(shè)置文件。默認(rèn)是pep8 -d, --diff   比較格式化后的文件和原文件的區(qū)別 -i, --in-place  直接把格式化的文件更改在源文件上 -l START-END, --lines START-END      指定格式化的行的范圍 -r, --recursive  在目錄中遞歸運行

格式樣式
使用YPF的格式樣式是可以配置的,并且有許多“knobs”可用于調(diào)整YAPF是如何做格式的。(查看style.py模塊)
為了控制樣式,運行帶有--style的YAPF。它接受一個預(yù)定義的樣式(例如pep8或google)――一個通往配置文件(能指定所需樣式或一個鍵/值對的字典)的途徑。
配置文件是一個簡單的鍵=值對的列表(區(qū)分大小寫),擁有一個【style】,例如:

2016531170134280.png (492×107)

當(dāng)然也可以通過字典在命令行上做出同樣的事情,例如:
--style='{basedonstyle: google, indent_width: 4}'
這將用google作為基礎(chǔ)樣式,并修改成擁有4個空格縮進(jìn)。

例子
以下是一段非常ugly的代碼:

x = { 'a':37,'b':42,'c':927}y = 'hello ''world'z = 'hello '+'world'a = '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]

利用yapf將它格式化:

x = {'a': 37, 'b': 42, 'c': 927}y = 'hello ' 'world'z = 'hello ' + 'world'a = '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]

好看很多!

另外,YAPF在格式化的時候仍然有一些問題。如:

BAZ = { [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]}

當(dāng)有一大段內(nèi)容的時候,我們都習(xí)慣分行排列,因為這顯然更方便我們閱讀。但是,使用YAPF格式化后:

BAZ = {[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]}

遇到這種情況,YAPF也提供了解決的方法,就是在代碼段的后面加上: # yapf: disable

BAZ = { [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]} # yapf: disable

所以,YAPF是一個非常有用的工具,它可以幫助你將代碼變得更加一致、更加容易閱讀并且Pythonic。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 九寨沟县| 出国| 渝北区| 奈曼旗| 芒康县| 黔江区| 长春市| 浦江县| 迁安市| 山东省| 桂阳县| 石景山区| 奉节县| 永平县| 洛扎县| 甘谷县| 托克逊县| 小金县| 措勤县| 江西省| 普兰县| 青河县| 苗栗县| 四川省| 齐齐哈尔市| 佛冈县| 洛阳市| 舞阳县| 彰化县| 汕头市| 阿巴嘎旗| 哈巴河县| 临泽县| 怀仁县| 黄大仙区| 铁力市| 肥东县| 元江| 枣庄市| 宜都市| 定州市|