yapf-来自Google的Python代码格式化程序

目前,大多数用于Python的格式化程序(例如autopep8和pep8ify)都是用来消除代码中的lint错误的。这有一些明显的局限性。例如,可能不会重新格式化符合PEP 8准则的代码。但这并不意味着代码看起来不错。

YAPF采用了不同的方法。它基于Daniel Jasper开发的'clang-format'。从本质上讲,即使原始代码没有违反样式指南,该算法也可以将代码重新格式化为符合样式指南的最佳格式。这个想法也类似于Go编程语言的“ gofmt”工具:结束所有关于格式的争论,如果在进行修改后,只要将整个项目的代码库简单地通过YAPF传递,样式就在整个项目中保持一致,并且在每次代码审查中都没有争论样式。

最终目标是YAPF生成的代码与程序员遵循样式指南所编写的代码一样好。它消除了维护代码的繁琐工作。

开始使用

要从PyPI安装YAPF

$ pip install yapf

YAPF仍被认为处于“ alpha”阶段,发布的版本可能会经常更改。因此,保持最新状态的最佳方法是克隆最新的源码。

请注意,如果您打算将YAPF用作命令行工具而不是库,则不需要安装。YAPF支持由Python解释器作为目录运行。如果您将YAPF克隆/解压缩到DIR,则可以运行:

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

示例

调用yapf的两个主要API是FormatCode和FormatFile,它们共享几个参数,如下所述:

常见问题

YAPF为什么会破坏我的格式?

YAPF尽力使格式正确。但是对于某些代码,它不如手工格式化好。特别是,在YAPF下,大数据文字可能会被严重毁坏。

其原因有很多,简而言之,YAPF仅仅是帮助开发的工具。它将格式化与样式指南相符的内容,但可能不等于可读性。

可以减轻这种情况的方法是,指示重新格式化某些格式时,YAPF应该忽略的区域:

您还可以像这样禁用单个文字的格式设置:

要保留漂亮的凹形方括号,请使用 dedent_closing_brackets您的样式。请注意,在这种情况下,所有括号,包括函数定义和调用,都将使用该样式。这样可以确保格式化代码库之间的一致性。

为什么不改进现有工具?

我们想使用clang格式的重新格式化算法。它非常强大,旨在提供最佳格式。创建现有工具时会考虑不同的目标,并且需要进行大量修改才能转换为使用clang格式的算法。

我可以在程序中使用YAPF吗?

可以!YAPF旨在用作库和命令行工具。这意味着工具或IDE插件可以免费使用YAPF。

(0)

相关推荐

  • 在Win10系统中Vscode搭建Python3开发环境

    前言 Python是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 是商业数据分析.人工智能领域必不可少的工具,应用领域极其广泛,囊括了网 ...

  • python代码打包成exe

    python代码打包成exe

  • 学Python需要哪些工具?五大工具推荐!

    Python是一门非常友好.功能强大的编程语言,学习之后Python可以从事多个领域,可以为我们未来开启无限可能.当然了想要学习好Python,必不可少的就是Python开发工具,今天小编为大家介绍几 ...

  • VS Code超详细Python配置指南,看这一篇就够了

    Python数据之道 点击领取<Python知识手册>高清电子版,回复数字 "600" 获取.「Python数据之道」秉承"让数据更有价值"的理念​ ...

  • Python类调用实例方法

    通过前面的学习,类方法大体分为3类,分别是类方法.实例方法和静态方法,其中实例方法用的是最多的.我们知道,实例方法的调用方式其实有2种,既可以采用类对象调用,也可以直接通过类名调用. 通常情况下,我们 ...

  • Python编程的最好搭档:VSCode 详细指南

    刚学Python的同学可能会觉得每次写Python的时候都得打开Cmd有点烦躁,直接上手Pycharm的同学可能会觉得这软件太笨重了,晦涩难用.那么有没有省去打开CMD的步骤,又能弥补Pycharm笨 ...

  • Python编程必备工具,推荐这五个!

    python是编程入门者非常不错的选择,现在不少程序员都开始转行到python行列中,因为简单易学.应用范围广,不过学习python还是需要一个好的工具,否则会吃不少苦头,那么Python编程必备5大 ...

  • Julia机器学习核心编程.2(LLVM和JIT)

    LLVM本来是伊利诺伊大学的一个研究项目,其目的是创建基于静态单一任务(SSA)的现代的.类型安全的编译方法.它拥有底层操作,具有灵活性,并且具有可以清晰地表示所有高级语言的能力.它实际上是模块化.可 ...

  • QT使用技巧

    一.快捷键 1.代码编辑模式下,Ctrl shift +(同时按住Ctrl.shift.+)可放大字体,Ctrl -可缩小字体,Ctrl 0可恢复初始字体,也可以Ctrl 鼠标滚轮结合使用. 2.Ct ...

  • python语法第二课《程序中的注释》

    https://m.toutiao.com/is/J7gGBCJ/ 看完美女后学习! 刚开始学程序时,就要有一个良好的编程习惯~写注释!写注释!写注释! 注释就是一种说明,用一种直白的方法告诉其他人你 ...

  • 用VScode配置Python开发环境

    引用:https://www.jianshu.com/p/506debe61423 前言 VScode是一个相当优秀的IDE,具备开源.跨平台.模块化.插件丰富.启动时间快.颜值高.可高度定制等等优秀 ...