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】,例如:

当然也可以通过字典在命令行上做出同样的事情,例如:
--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。

(0)

相关推荐

  • Python datetime时间格式化去掉前导0

    Python时间格式化的时候,去掉前导0的: dt = datetime.now() print dt.strftime('%-H') #结果是: '4' 在format string的%与flag之间,添加一个"-"即可. 在Mac和Linux中试过可用,不确定是否可以移植.

  • python 字符串格式化代码

    格式汇总: 格式 描述 格式 描述 %% 百分号%标记(多出来的%是转义作用)     %c 字符及其ASCII码 %s 字符串 %d 有符号整数(十进制) %u 无符号整数(十进制) %o 无符号整数(八进制)     %x 无符号整数(十六进制) %X 无符号整数(十六进制大写字符) %e 浮点数字(科学计数法) %E 浮点数字(科学计数法,用E代替e) %f 浮点数字(用小数点符号)     %g 浮点数字(根据值的不同自动选择%e或%f) %G 浮点数字(类似于%g,根据值的不同自动选择

  • python中日期和时间格式化输出的方法小结

    本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化日期时间的函数为datetime.datetime.strftime():由字符串转为日期型的函数为:datetime.datetime.strptime(),两个函数都涉及日期时间的格式化字符串,这里提供详细的代码详细演示了每一个参数的使用方法及范例. 下面是格式化日期和时间时可用的替换符号 %a 输出当前是星期几的英文简写 >>> import datetime >&

  • python格式化字符串实例总结

    本文实例总结了python格式化字符串的方法,分享给大家供大家参考.具体分析如下: 将python字符串格式化方法以例子的形式表述如下: * 定义宽度 Python代码如下: >>>'%*s' %(5,'some') ' some' - 左对齐 Python代码如下: >>>'%-*s' %(5,'some') 'some ' 最小宽度为6的2位精度的浮点小数,位数不够时前补空格 Python代码如下: >>>'%6.2f' %8.123 ' 8.12

  • Python中用format函数格式化字符串的用法

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和:来代替%. "映射"示例 通过位置 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kzc',18) Out[2]: 'kzc,18' In [3]: '{1},{0},{1}'.fo

  • python自动格式化json文件的方法

    本文实例讲述了python自动格式化json文件的方法.分享给大家供大家参考.具体如下: 这里主要实现将代码混乱的json文件格式化. 还有一小堆python常用算法代码 完整实例代码点击此处本站下载. class JsonFormatter: def __init__(self,intend=4,name=""): self.name=name self.intend=intend self.stack=[] self.obj=None self.source=self.get_so

  • Python 时间操作例子和时间格式化参数小结

    1.取过去具体时间的方法: 复制代码 代码如下: #!/usr/bin/python import time  #取一天前的当前具体时间   time.strftime('%Y-%m-%d %T',time.localtime(time.time()-24*60*60)) #取15天前的当前具体时间   time.strftime('%Y-%m-%d %T',time.localtime(time.time()-15*24*60*60)) #取15天前当前具体时间的前2小时   time.str

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

    目前用于Python的格式化程序(如autopep8和pep8ify)都用于删除代码中的lint错误.这有很明显的局限性. YAPF采用了不同的方法,基于Daniel Jasper开发的"'clang-format".从本质上来说,该算法取走代码并重新排版,以符合样式指南的最佳格式,即便原始代码没有违反样式指南.这个想法也是类似于Go编程语言的gofmt工具. 其最终目标是让YAPE所产生的代码可以与程序员所写的代码一样好(前提是程序员遵循样式指南),它取代了一些维护代码的苦差. 安装

  • 最新Python idle下载、安装与使用教程图文详解

    简介:IDLE是Python软件包自带的一个集成开发环境,可以方便地创建.运行.调试Python程序.本文包括IDEL安装.使用配置.和运行调试教程. 由于Google.YouTube等大型公司的推广,python编程语言越来越受欢迎,很多编程爱好者,也将Python做为了首先的编程语言. 今天我们就来讲一下,学习的第一步,安装Python idle编辑器,也它的调试和使用. 第一步,我们先去下载一个Python idle程序安装包. 本节讲的是windows下的idle,Linux idle是

  • Python selenium模块的安装和配置教程

    目录 一.selenium的安装以及简单应用 二.selenium的简单使用 三.selenium提取数据 1.driver对象常用的属性和方法 2.driver对象定位标签元素获取标签对象的方法 3.标签对象提取文本内容和属性值 四.selenium无头模式 一.selenium的安装以及简单应用 我们以谷歌浏览器的chromedriver为例 1.在Python虚拟环境中安装selenium模块 pip/pip3 install selenium 2.下载版本符合的webdriver 以ch

  • python中pip的安装与使用教程

    在安装pip前,请确认win系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录python的安装盘(如C盘):\Python27\Scripts下面 2.采用cd命令进入到Scripts 目录下面:G:\Python27\Scripts 3.输入命令: easy_install pip,开始安装pip 4. pip安装成功后,在cmd下执行pip,将会有如下提示. 5. pip 是一个安装和管理 Python包的工具,下载相关pyth

  • python 3.7.4 安装 opencv的教程

    明确一下,我们需要使用python来调用opencv中的库函数,所以需要安装opencv-python. 主要需要安装: 1. opencv-python 2. numpy 第一步先来安装opencv-python. 方法一:可以直接在cmd中使用 pip install opencv-python 我遇到了以下的问题(找不到一个满足当前python版本的opencv版本),如果你也是,那么使用下面的另一种方法. 方法二:可以先下载好文件,再安装(地址:https://www.lfd.uci.e

  • Python 中的pygame安装与配置教程详解

    安装软件环境及版本说明 OS: Win10 x 64 专业版 Python: 2.7 IDE: PyCharm Community 2018 1. 安装python 1)下载并安装python python官网下载需要的版本,并安装(安装过程很简单,步骤略) https://www.python.org/downloads/windows/ 这里下载的是python2.7 2)配置环境变量 如果安装python时,没有勾选添加python到环境变量PATH,则需要手动添加 3)验证是否安装+配置

  • Python学习之路安装pycharm的教程详解

    简介:pycharm 是一款功能强大的 Python 编辑器,具有跨平台性.下载地址 第一步:下载pycharm 软件 下载时会有两个版本供选择.Professional版(专业版)和Community版(社区版).建议安装Community版本,因为免费使用. 第二步:安装pycharm软件 1.找到下载的 .exe文件,双击运行安装.建议修改安装位置,软件不要总是安装在默认C盘,如下,我选择E盘. 2.接下来 3.接下来 4.Install 然后就是静静的等待安装了.如果我们之前没有下载有P

  • python 3.8.3 安装配置图文教程

    python安装教程(配置环境变量),供大家参考,具体内容如下 人生苦短,我用python 直接在官网下载安装包.msi文件进行安装: 下载python 注意:浏览器左下角下载(点击后,会自动下载) 安装python 1.完成后点击下一步 2. 下一步后,将这几个全部勾选上(自动安装pip等软件包) 3.下一步后,再次勾选[这里把Python的环境变量已经加了,但是后续要使用pip的时候就需要手动加一下环境变量],点击安装 查看环境变量是否有python的环境变量 在命令窗口输入 python

  • windows下python 3.6.4安装配置图文教程

    windows下python的安装教程,供大家参考,具体内容如下 -–因为我是个真小白,网上的大多入门教程并不适合我这种超级超级小白,有时候还会遇到各种各样的问题,因此记录一下我的安装过程,希望大家都能入门愉快,欢迎指教 -–本文针对超级小白,内容可能会引起各路大神不适,请谨慎观看 1. 打开官网/www.python.org,选择Downloads 2. 然后在这里选择要安装的版本3.X.X或者2.X.X 3. 2.X.X和3.X.X的下载(2和3需要下载的文件名字不太一样,需要注意一下下载什

  • Python测试开源工具splinter安装与使用教程

    splinter介绍   Splinter是一个使用Python测试Web应用程序的开源工具,可以自动化浏览器操作,例如访问URL和与它们的项进行交互.例如,我们使用百度引擎搜索内容,需要再搜索框内输入关键字,再按百度一下即可以搜索想要的内容,使用Splinter可以使用pyhton脚本来实现上述过程. Splinter安装   Splinter的使用需要依赖python环境,因此首先需要装python(python安装可以直接安装anaconda集成环境,网上一搜教程很多~),并且python

随机推荐