谷歌开源!一个格式化 Python 代码的好帮手!
大部分人使用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 代码的好帮手!相关推荐
- pycharm:格式化python代码
pycharm:格式化python代码 格式化快捷键: Ctrl+Alt+L 自定义格式化: pycharm 菜单 File->Settings: 我个人不喜欢一个函数有多个参数,对每个参数进行 ...
- python black_如何使用Black自动格式化Python代码
python black Writing Python code is one thing and writing the code in a good format is another thing ...
- python支持向量机分类器怎么用_可视化SVM分类器开源实现的python代码
如下的Python代码是可视化SVM分类器开源实现的python代码.这是个小巧又简单,却不一定满足大家高效要求的具有可视化功能的SVM分类器源码.是采用标准python写成的,但如果需要作图功能,则 ...
- Facebook 开源 Instagram 的Python 代码静态安全分析工具 Pysa
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 Facebook 正式发布安全工具 Pysa,它专用于查找并修复 Instagram app 庞大Python 代码库中的漏洞. Py ...
- 一个让Python代码运行更快的最佳方式!
作者 | Serdar Yegulalp 译者 | 姜松浩,责编 | 屠敏 转载自 CSDN(ID:CSDNnews) Python因其强大.灵活且易于使用等特性,而赢得了声誉.这些优点使其在各种各样 ...
- 创建你的第一个webdriver python代码
前言 今天我们开始我们的第一个python webdriver自动化测试脚本.并就测试脚本进行一一解释说明. webdriver python代码 本示例代码演示了使用Ie浏览器访问百度进行搜索测试. ...
- sublimetext3格式化python代码_sublime text 3搭建python
1.ST3下载地址: http://www.sublimetext.com/3 2.安装Sublime Text Build 3114 Setup.exe应用程序. 3.ST3的工具优点就是轻量级,简 ...
- vscode自动格式化python代码符合pep8
安装格式化工具 打开命令行窗口安装以下工具 $ pip install -U flake8 $ pip install -U autopep8 在VScode配置中打开首选项–>设置,搜索pyt ...
- 谷歌语音文本转换python代码_谷歌语音到文本API结果为空
我正在使用云语音到文本api将音频文件转换为文本文件.我用python执行它,下面是代码.在import io import os os.environ["GOOGLE_APPLICATIO ...
最新文章
- 信号转换问题 | 模拟电路解决方式
- FastDFS 集群 安装 配置
- 利用WOFF模糊和电报渠道进行通信
- 309. zui佳买卖股票时机含冷冻期(JavaScript)
- 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(4)签到题4题
- Apache 跟踪用户会话
- Python 线程复习
- lopatkin俄大神精简中文系统Windows 10 Pro 18898.1000 20H1 PreRelease x86-x64 ZH-CN DREY
- LiveReload的下载安装 + Sublime的配置
- aso优化应用市场推广方案怎么写
- python NLP中文近义词
- 如何让cloudflare缓存html,cloudflare无限流量缓存的使用方法
- 流媒体服务器原理和架构解析
- SRA数据下载(通过EBI-ENA数据库,使用ASpera)
- 部署外网网站(二)——宝塔搭建服务器
- 南通万豪酒店开业;诺瓦瓦克斯任命新任总裁兼CEO | 美通企业日报
- centos离线安装docker
- Unity相机旋转和人物朝向
- 什么是勒索病毒,勒索病毒简介,电脑中病毒了怎么修复
- 聚合支付备案机构为479家,首次出现注销聚合支付备案