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

 更新时间:2016年05月31日 17:05:57   作者:wwt  
Google的开发者文档中有一套Python的代码书写规范,而在GitHub上同样开源了一款名为YAPF的命令行程序用作Python的格式化,下面我们就来看下这款Google开源的Python格式化工具YAPF的安装和使用教程

目前用于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】,例如:

2016531170134280.png (492×107)

当然也可以通过字典在命令行上做出同样的事情,例如:
--style='{basedonstyle: google, indent_width: 4}'
这将用google作为基础样式,并修改成拥有4个空格缩进。

例子
以下是一段非常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 y
def 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 y


def f(a):
 return 37 + -+a[42 - x:y ** 3]

好看很多!

另外,YAPF在格式化的时候仍然有一些问题。如:

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

当有一大段内容的时候,我们都习惯分行排列,因为这显然更方便我们阅读。但是,使用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。

相关文章

  • python用700行代码实现http客户端

    python用700行代码实现http客户端

    这篇文章主要介绍了python用700行代码实现http客户端的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • Python中多进程处理的Process和Pool的用法详解

    Python中多进程处理的Process和Pool的用法详解

    在Python编程中,多进程是一种强大的并行处理技术,Python提供了两种主要的多进程处理方式:Process和Pool,本文将详细介绍这两种方式的使用,希望对大家有所帮助
    2024-02-02
  • Python文本终端GUI框架示例详细讲解

    Python文本终端GUI框架示例详细讲解

    GUI,全称为图形用户界面,又称为图形用户接口,是一种人与计算机通信的界面显示格式。那么Python常用GUI框架有哪些呢?我们来看看具体介绍
    2022-11-11
  • Pytorch框架之one_hot编码函数解读

    Pytorch框架之one_hot编码函数解读

    这篇文章主要介绍了Pytorch框架之one_hot编码函数解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 详解python配置虚拟环境

    详解python配置虚拟环境

    这篇文章主要介绍了python配置虚拟环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • numpy中np.sort返回索引的具体使用

    numpy中np.sort返回索引的具体使用

    本文主要介绍了使用numpy中np.sort函数返回索引的详细解释和使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • python数据库操作指南之PyMysql使用详解

    python数据库操作指南之PyMysql使用详解

    PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2 中则使用mysqldb,下面这篇文章主要给大家介绍了关于python数据库操作指南之PyMysql使用的相关资料,需要的朋友可以参考下
    2023-03-03
  • 使用Python下载歌词并嵌入歌曲文件中的实现代码

    使用Python下载歌词并嵌入歌曲文件中的实现代码

    这篇文章主要介绍了使用Python下载歌词并嵌入歌曲文件中的实现代码,需要借助eyed3模块,需要的朋友可以参考下
    2015-11-11
  • Python使用正则实现计算字符串算式

    Python使用正则实现计算字符串算式

    这篇文章主要介绍了Python使用正则实现计算字符串算式的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python 编码规范整理

    python 编码规范整理

    这篇文章主要介绍了python 编码规范整理,需要的朋友可以参考下
    2018-05-05

最新评论