介绍 目前用于Python的格式化程序(如autopep8和pep8ify)都用于删除代码中的lint错误。这有很明显的局限性。 YAPF采用了不同的方法,基于Daniel Jasper开发的“'clang-format”。从本质上来说,该算法取走代码并重新排版,以符合样式指南的最佳格式,即便原始代码没有违反样式指南。这个想法也是类似于Go编程语言的gofmt工具。 其最终目标是让YAPE所产生的代码可以与程序员所写的代码一样好(前提是程序员遵循样式指南),它取代了一些维护代码的苦差。 安装 如果你打算使用YAPF作为一个命令行工具,而不是一个库,那么安装是没有必要的。通过Python解释器,YAPF可以作为一个目录运行。如果你克隆/解压YAPF到DIR,可以这么运行:
Python版本 YAPF支持Python2.7和3.4+。 用法 设置: 格式样式 使用YPF的格式样式是可以配置的,并且有许多“knobs”可用于调整YAPF是如何做格式的。(查看style.py模块) 为了控制样式,运行带有--style的YAPF。它接受一个预定义的样式(例如pep8或google)——一个通往配置文件(能指定所需样式或一个键/值对的字典)的途径。 配置文件是一个简单的键=值对的列表(区分大小写),拥有一个【style】,例如: 当然也可以通过字典在命令行上做出同样的事情,例如:
这将用google作为基础样式,并修改成拥有4个空格缩进。 案例 通过YAPF,可以将下面这段代码: 重新格式化成: 常见问题 为什么YAPF破坏了我很棒的格式? 对于一些代码,它不会比手动格式好,特别是大的数据文字,在YAPF下会变得更糟糕。引起这些的原因是多样的,但是从本质上来说,YAPF只是一个帮助开发的简单工具,它将事物与样式指南保持一致,但这并不等于可读性。 为减轻这种情况,你需要表明YAPF重新格式化时需要忽视的区域: 你也可以禁用格式单一的字面,例如: 为什么不改善现有的工具? 现有的工具要考虑到不同的目标,并需要大量的修改转换以便使用clang-format算法。我们希望使用clang-format重组算法。 我可以在程序中使用YAPF吗? 答案是肯定的!YAPF被设计用于作为一个库以及一个命令行工具来使用。这意味着使用YAPF时,一个工具或IDE插件是免费的。 注:更多详细内容可在GitHub上获取,点此进入。 |