YAPF:Google开源的Python代码格式化工具

点这里

现在的大多数 Python 代码格式化工具(比如:autopep8 和 pep8ify)是可以移除代码中的 lint 错误。这显然有些局限性。比如:遵循 PEP 8 指导的代码可能就不会被格式化了,但这并不说明代码看起来就舒服。

译注:lint 是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。与大多数C语言编译器相比,lint可以对程序进行更加广泛的错误分析,是一种更加严密的编译工具。最初,lint这个工具用来扫描C源文件并对源程序中不可移植的代码提出警告。但是现在大多数lint实用程序已经变得更加严密,它不但可以检查出可移植性问题,而且可以检查出那些虽然可移植并且完全合乎语法但却很可能是错误的特性。

但 YAPF 独辟蹊径。它脱胎于由 Daniel Jasper 开发的 clang-format。大体上来说,这个算法获取代码,然后把初始代码重新编排,即便初始代码并没有违背规范,也可使其达到遵循代码规范的最佳格式。这个理念和 Go 语言中的 gofmt 工具相似,终结关于格式的各种“圣战”。如果一个项目的代码库,无论何时修改,通过 YAPF 优化后,代码风格可统一,在每次 code review 中,也就没有必要争论风格了。

YAPF 的终极目标是生成和遵循代码规范的程序员写出的一样的代码。可帮你减少维护代码的苦差事。

YAPF 支持 Python 2.7 和 3.4+。

用法


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

usage: yapf [-h] [--style STYLE] [-d | -i] [-l START-END | -r] ...

Formatter for Python code.

positional arguments:

  files

optional arguments:

  -h, --help            show this help message and exit

  --style STYLE         specify formatting style: either a style name (for

                        example "pep8" or "google"), or the name of a file

                        with style settings. pep8 is the default.

  -d, --diff            print the diff for the fixed source

  -i, --in-place        make changes to files in place

  -l START-END, --lines START-END

                        range of lines to reformat, one-based

  -r, --recursive       run recursively over directories

示例

美化前:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

= {  ‘a‘:37,‘b‘:42,

‘c‘:927}

= ‘hello ‘‘world‘

= ‘hello ‘+‘world‘

= ‘hello {}‘.format(‘world‘)

class foo  (     object  ):

  def f    (self   ):

    return       37*-+2

  def g(self, x,y=42):

      return y

def f  (   a ) :

  return      37+-+a[42-x :  y**3]

美化后:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

= {‘a‘37‘b‘42‘c‘927}

= ‘hello ‘ ‘world‘

= ‘hello ‘ + ‘world‘

= ‘hello {}‘.format(‘world‘)

class foo(object):

    def f(self):

        return 37 * -+2

    def g(self, x, y=42):

        return y

def f(a):

    return 37 + -+a[42 - x:y ** 3]

详情请参考下方的 Github 链接。

GitHub:https://github.com/google/yapf

时间: 2024-08-29 12:59:55

YAPF:Google开源的Python代码格式化工具的相关文章

Google 开源的 Python 命令行库:初探 fire

作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Article 一.前言 在本系列前面所有文章中,我们分别介绍了 argparse.docopt 和 click 的主要功能和用法.它们各具特色,都能出色地完成命令行任务.argparse 是面向过程的,需要先设置解析器,再定义参数,再解析命令行,最后实现业务逻辑.docopt 先用声明式的语法定义出参数,再过程式地

Google的Python代码格式化工具YAPF详解

平时习惯了杂乱无章地编写代码,而最后的代码勘定,却依赖于PyCharm自带的格式化工具,以及根据其自带的提示功能来规范代码.而pycharm里的格式化工具,不支持对多文件进行代码批量格式化,曾经尝试些解决方案,结果无功而返,不了了之.今天看到这个工具,终于有望了. # 本地小试cd /home/kylin/programgit clone https://github.com/google/yapf.gitPYTHONPATH=/home/kylin/program/yapf/ python /

Google 开源项目风格指南

Python风格规范 分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 Tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号. Yes: foo_bar(self, width, height, color='black', design=None, x='foo', emphasis=

关于Python代码调试的问题

关于Python代码调试的问题使用 pdb 进行调试pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了一些常用的调试命令,下面结合具体的实例讲述如何使用 pdb 进行调试.import pdb   a = "aaa" pdb.set_trace()   b = "bbb" c = "ccc" fin

Python代码样例列表

├─algorithm│       Python用户推荐系统曼哈顿算法实现.py│      NFA引擎,Python正则测试工具应用示例.py│      Python datetime计时程序的实现方法.py│      python du熊学斐波那契实现.py│      python lambda实现求素数的简短代码.py│      Python localtime()方法计算今天是一年中第几周.py│      Python math方法算24点代码详解.py│      Pyth

这7大神器, 让你的Python 代码更易于维护

当软件项目进 入"维护模式"时,对代码的可读性和编码标准经常就忽略了(甚至从一开始就没有建立起这些标准.)但是,在代码库中保持一致的风格和测试标准是减少维护负担的重要因素,它能确保未来的开发人员能够快速了解新的项目情况 - 并保持项目的良好运行 保护项目未来可维护性的一个好方法就是使用外部库来检查你的代码运行状况.以下是我们最喜欢的一些用于检查代码的库(包含检查PEP 8和其他样式错误),让代码风格保持一致,并确保在项目成熟时的测试覆盖率保持在可接受范围. 检查你的代码风格 PEP 8

Google开源命令行解析工具gflags

转自:https://blog.csdn.net/achelloworld/article/details/41959595# gflags是google开源的一套命令行参数解析工具,支持C++和Python语言,其使用方法: 1. 定义参数  使用gflags需要包含头文件#include <gflags/gflags.h>.将需要的命令行参数使用gflags的宏:DEFINE_xxxxx(变量名,默认值,help-string) 定义在文件当中,定义的参数是全局的,gflags支持的参数类

Python 代码实现验证码识别

Python 代码实现验证码识别 测试开发社区  1周前 源 /  j_hao104 一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.

玩转Google开源C++单元测试框架Google Test系列(gtest)之一 初识gtest

进入文件夹执行: ./configure make make install 完毕即可正常使用: (1)包含include目录 -I/root/scp/gtest/gtest-1.3.0: (2)包含lib中的动态链接库:-lgtest -L/root/scp/gtest/gtest-1.3.0/lib 示例代码: [cpp] view plaincopy #include <gtest/gtest.h> int Foo(int a, int b) { if (a == 0 || b == 0