大部分人使用Python中的代码格式化工具时都会选择autopep8之类的工具,这些工具可能有一定的局限性,比如不会重新格式化已经符合 PEP8 的代码。

而本文即将介绍的 Yapf,不仅能将代码格式化为符合 PEP8 代码指南的格式,还能格式化为符合 Google 代码指南的格式,可选项更多,让你的代码更加漂亮。

1.准备

请选择以下任一种方式输入命令安装依赖
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install yapf

YAPF 支持 Python 2.7 和 3.6.4+。

2.Yapf 使用方法

你可以在命令行中直接使用 Yapf, 参数如下:

yapf [-h] [-v] [-d | -i | -q] [-r | -l START-END] [-e PATTERN][--style STYLE] [--style-help] [--no-local-style] [-p][-vv][files ...]

必选参数:

files 需要被格式化的文件

可选参数:
-h, --help 显示帮助信息
-v, --version 显示程序的版本号
-d, --diff 打印格式化前后差异
-i, --in-place 格式化文件并替换
-q, --quiet 什么都不输出
-r, --recursive 在目录上递归运行
-l START-END, --lines START-END 重新格式化的行范围,基于一个
-e PATTERN, --exclude PATTERN 需要排除的文件
--style STYLE 指定格式化样式(例如“pep8”或“google”)
-p, --parallel 并行格式化(多个文件时有效)
-vv, --verbose 在处理时打印出文件名

举个例子,如果我们有以下的混乱格式代码 1.py :

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*-+2def g(self, x,y=42):return y
def f  ( a ) :return      37+-+a[42-x : y**3]

为了格式化它,我们可以在命令行中执行以下命令:

yapf -i 1.py

效果如下:

3.Yapf 作为模块使用

Yapf 不仅可以在命令行中使用,我们还可以在项目运行时使用。

一个比较常见的场景是用户在你的web网站上提交了python代码,你希望能一件格式化这些代码,那将yapf作为格式化的模块则再好不过。

Yapf 最主要的两个 API 是 FormatCode 和 FormatFile:

from yapf.yapflib.yapf_api import FormatCodeformatted_code, changed = FormatCode("f ( a = 1, b = 2 )")
print(formatted_code)
# 'f(a=1, b=2)\n'
print(changed)
# True

你还可以传递 style_config 决定使用哪种指南做格式化:

from yapf.yapflib.yapf_api import FormatCodeprint(FormatCode("def g():\n return True", style_config='pep8')[0])
# 'def g():\n return True\n'

FormatFile,这个函数可以从文件中读取代码并格式化:

from yapf.yapflib.yapf_api import FormatFile
print(open("foo.py").read())
# a==b
reformatted_code, encoding, changed = FormatFile("foo.py")
print(formatted_code)
# 'a == b\n'
print(encoding)
# 'utf-8'
print(changed)
# True

如果你添加in_place参数,它将把格式化后的代码写回文件中:

from yapf.yapflib.yapf_api import FormatFile
print(FormatFile("foo.py", in_place=True)[:2])
# (None, 'utf-8')print(open("foo.py").read())
# a == b

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注我们!

有任何问题,可以在公众号后台回复:小助手,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

谷歌开源!一个格式化 Python 代码的好帮手!相关推荐

  1. pycharm:格式化python代码

    pycharm:格式化python代码 格式化快捷键: Ctrl+Alt+L 自定义格式化: pycharm 菜单 File->Settings: 我个人不喜欢一个函数有多个参数,对每个参数进行 ...

  2. python black_如何使用Black自动格式化Python代码

    python black Writing Python code is one thing and writing the code in a good format is another thing ...

  3. python支持向量机分类器怎么用_可视化SVM分类器开源实现的python代码

    如下的Python代码是可视化SVM分类器开源实现的python代码.这是个小巧又简单,却不一定满足大家高效要求的具有可视化功能的SVM分类器源码.是采用标准python写成的,但如果需要作图功能,则 ...

  4. Facebook 开源 Instagram 的Python 代码静态安全分析工具 Pysa

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 Facebook 正式发布安全工具 Pysa,它专用于查找并修复 Instagram app 庞大Python 代码库中的漏洞. Py ...

  5. 一个让Python代码运行更快的最佳方式!

    作者 | Serdar Yegulalp 译者 | 姜松浩,责编 | 屠敏 转载自 CSDN(ID:CSDNnews) Python因其强大.灵活且易于使用等特性,而赢得了声誉.这些优点使其在各种各样 ...

  6. 创建你的第一个webdriver python代码

    前言 今天我们开始我们的第一个python webdriver自动化测试脚本.并就测试脚本进行一一解释说明. webdriver python代码 本示例代码演示了使用Ie浏览器访问百度进行搜索测试. ...

  7. sublimetext3格式化python代码_sublime text 3搭建python

    1.ST3下载地址: http://www.sublimetext.com/3 2.安装Sublime Text Build 3114 Setup.exe应用程序. 3.ST3的工具优点就是轻量级,简 ...

  8. vscode自动格式化python代码符合pep8

    安装格式化工具 打开命令行窗口安装以下工具 $ pip install -U flake8 $ pip install -U autopep8 在VScode配置中打开首选项–>设置,搜索pyt ...

  9. 谷歌语音文本转换python代码_谷歌语音到文本API结果为空

    我正在使用云语音到文本api将音频文件转换为文本文件.我用python执行它,下面是代码.在import io import os os.environ["GOOGLE_APPLICATIO ...

最新文章

  1. 信号转换问题 | 模拟电路解决方式
  2. FastDFS 集群 安装 配置
  3. 利用WOFF模糊和电报渠道进行通信
  4. 309. zui佳买卖股票时机含冷冻期(JavaScript)
  5. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(4)签到题4题
  6. Apache 跟踪用户会话
  7. Python 线程复习
  8. lopatkin俄大神精简中文系统Windows 10 Pro 18898.1000 20H1 PreRelease x86-x64 ZH-CN DREY
  9. LiveReload的下载安装 + Sublime的配置
  10. aso优化应用市场推广方案怎么写
  11. python NLP中文近义词
  12. 如何让cloudflare缓存html,cloudflare无限流量缓存的使用方法
  13. 流媒体服务器原理和架构解析
  14. SRA数据下载(通过EBI-ENA数据库,使用ASpera)
  15. 部署外网网站(二)——宝塔搭建服务器
  16. 南通万豪酒店开业;诺瓦瓦克斯任命新任总裁兼CEO | 美通企业日报
  17. centos离线安装docker
  18. Unity相机旋转和人物朝向
  19. 什么是勒索病毒,勒索病毒简介,电脑中病毒了怎么修复
  20. 聚合支付备案机构为479家,首次出现注销聚合支付备案

热门文章

  1. 微信公号开发之图文消息全攻略
  2. 国内消防报警主机调试软件
  3. iOS最新吊炸天的资源
  4. 基于Java SSM springboot健身管理系统设计和实现
  5. 如何利用CCleaner快速查找重复文件?
  6. 如何对PDF文档进行数字签名
  7. 仪表和中控车机GUI界面开发工具介绍
  8. 谷歌浏览器Chrome,TableExport.js 导出时数据量过大报网络错误的问题
  9. 快速识别台式机的内存条
  10. memcached win64位服务端安装和java客户端实例