目前用于Python的格式化程序(如autopep8和pep8ify)都用于删除代码中的lint错误。这有很明显的局限性。
YAPF采用了不同的方法,基于Daniel Jasper开发的“'clang-format”。从本质上来说,该算法取走代码并重新排版,以符合样式指南的最佳格式,即便原始代码没有违反样式指南。这个想法也是类似于Go编程语言的gofmt工具。
其最终目标是让YAPE所产生的代码可以与程序员所写的代码一样好(前提是程序员遵循样式指南),它取代了一些维护代码的苦差。
安装
可以直接通过pip进行安装:
pip install yapf
如果你打算使用YAPF作为一个命令行工具,而不是一个库,那么安装是没有必要的。通过Python解释器,YAPF可以作为一个目录运行。如果你克隆/解压YAPF到DIR,可以这么运行:
$ PYTHONPATH=DIR python DIR/yapf [options] ...
YAPF的使用
安装完成之后,就可以直接在命令行中使用了。 以下是yapf的命令行参数:
usage: yapf [-h] [--style STYLE] [-d | -i] [-l START-END | -r] ...
Formatter for Python code. positional arguments: files optional arguments: -h, --help 显示帮助信息 --style STYLE 指定需要格式化的编程风格,如pep8或者google等 也可以是自定义的设置文件。默认是pep8 -d, --diff 比较格式化后的文件和原文件的区别 -i, --in-place 直接把格式化的文件更改在源文件上 -l START-END, --lines START-END 指定格式化的行的范围 -r, --recursive 在目录中递归运行
格式样式
使用YPF的格式样式是可以配置的,并且有许多“knobs”可用于调整YAPF是如何做格式的。(查看style.py模块)
为了控制样式,运行带有--style的YAPF。它接受一个预定义的样式(例如pep8或google)——一个通往配置文件(能指定所需样式或一个键/值对的字典)的途径。
配置文件是一个简单的键=值对的列表(区分大小写),拥有一个【style】,例如: