推荐一个小而美的Python代码格式化工具
代码可读性是评判代码质量的标准之一,有一个衡量代码质量的标准是 Martin 提出的 “WFT” 定律,即每分钟爆出 “WTF” 的次数。你在读别人代码或者做 Code Review 的时候有没有 “WTF” 冲动呢?
为了帮助开发者统一代码风格,Python 社区提出了 PEP8 代码编码风格,它并没有强制要求大家必须遵循,Python 官方同时推出了一个检查代码风格是否符合 PEP8 的工具,名字也叫 pep8,后来被重命名为了 pycodestyle。
看如下代码:
这是一个不符合 PEP8 的代码段,用 pycodestyle 可检测有哪些地方不符合 PEP8 风格。
pycodestyle 提示我们有两处地方不符合规范,第一个是单行有多个 import,第二个是类与模块之间需要空两行,这只是一个简单代码示例,真正的业务代码可能有上百行甚至几百行,如果我们要根据 PEP8 规范逐个进行修改建议会非常耗时,而我们的开发过程中,如果时刻关注每一行代码是否完全遵循 PEP8,将影响开发效率。
而有这么一款工具 Black,号称不妥协的代码格式化工具,为什么叫不妥协呢?因为它检测到不符合规范的代码风格直接就帮你全部格式化好,根本不需要你确定,直接替你做好决定。它也是 requests 作者最喜欢的工具之一
使用非常简单,安装成功后,和其他系统命令一样使用,只需在 black 命令后面指定需要格式化的文件或者目录就ok。
black link.py
这是一款小而美的工具,它并不是完全按照 PEP8 规范来格式化,比如默认每行代码的字符数是88个,当然你可以通过参数 -l 自定义长度,能一行显示完成的代码会放在一行,比如有多个元素的列表
后者把多个元素放在一行,显然更易读,而且代码更紧凑(如果你的工资是按照代码行数来算的话,不建议这么做),Black 是 PEP8 的严格子集。我的最佳实践方式就是使用 PyCharm 自带的格式化工具配合 Black 使用。因为 Black 也支持集成到 Pycharm 中。
如何集成 Pycharm?1、 安装black:
pip install black
2、 找到 black 的安装路径
$ which black # linux/mac$ where black # windows3、 添加扩展工具,打开 Preferences->Tools->External Tools ,添加一个新的扩展工具,Program 填 black 的安装路径,Arguments 填 $FilePath$
4、选择 Tools-> External Tools-> Black 即可对当前打开的文件斤西瓜代码格式化,当然,你还可以为其指定一个快捷键,使操作起来更方便。
值得注意的是,该工具只支持 Python3.6 环境
推荐一个小而美的Python代码格式化工具的更多相关文章
- 一个 11 行 Python 代码实现的神经网络
一个 11 行 Python 代码实现的神经网络 2015/12/02 · 实践项目 · 15 评论· 神经网络 分享到:18 本文由 伯乐在线 - 耶鲁怕冷 翻译,Namco 校稿.未经许可,禁止转 ...
- YAPF:Google开源的Python代码格式化工具
点这里 现在的大多数 Python 代码格式化工具(比如:autopep8 和 pep8ify)是可以移除代码中的 lint 错误.这显然有些局限性.比如:遵循 PEP 8 指导的代码可能就不会被格式 ...
- python 代码格式化工具:YAPF
学习资料: https://github.com/google/yapf 背景 现在的大多数 Python 代码格式化工具(比如:autopep8 和 pep8ify)是可以移除代码中的 lint 错 ...
- python 代码格式化工具:autopep8
学习资料: https://github.com/hhatto/autopep8 背景 autopep8 会根据 PEP 8 样式文档来格式化 python 代码.它使用 pep8 来决定代码的哪部分 ...
- Google的Python代码格式化工具YAPF详解
平时习惯了杂乱无章地编写代码,而最后的代码勘定,却依赖于PyCharm自带的格式化工具,以及其自带的提示功能来规范代码.而pycharm里的格式化工具,不支持对多文件进行代码批量格式化,曾经尝试些解决 ...
- python 代码格式化工具:pep8ify
资料: https://github.com/spulec/pep8ify 安装 $ pip install pep8ify 用法 Usage: 2to3 [options] file|dir ... ...
- 调用另一个文件的python代码【转载】
转自:https://blog.csdn.net/u010412719/article/details/47089883 例如我们有a.py和b.py两个文件,当我们需要在b.py文件中应用a.py中 ...
- pngCanvas 是一个使用纯Python代码的生成png图像的工具
#!/usr/bin/env python """Simple PNG Canvas for Python - updated for bytearray()" ...
- 给大家推荐一个python的学习网站 http://www.codecademy.com
注册之后,可以跟着指导,自己编码学习,比较方面: 再推荐一个在线编译的代码网站,c/c++ python 都可以: http://codepad.org
随机推荐
- .Net Core2.2 使用 AutoMapper进行实体转换
一.遇到的问题 在. Core Api 的编写中,我们经常会对一些功能点进行新增编辑操作,同时我们有时也会进行查询,但是我们查询的表的数据与我们返回的数据相差甚大,这是我们有需要自己手动进行类型的转换 ...
- Activiti网关--排他网关
排他网关 1.什么是排他网关 排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用来在流程中实现决策. 当流程执行到这个网关,所有分支都会判断条件是否为true,如果为 true 则执行该分 ...
- nginx 安装教程
Nginx 安装教程 本教程在CentOS6.7中安装nginx 1.8.0,Nginx中加入了taobao的concat模块,nginx-upload-module模块,pcre 以及nginx-u ...
- python:简单爬取自己的一篇博客文章
1.爬取文章地址:https://www.cnblogs.com/Mr-choa/p/12495157.html 爬取文章的标题.具体内容,保存到文章名.txt 代码如下: # 导入requests模 ...
- Java对字母大小写转换
Java对字母大小写转换 1.小写——大写String aa = "abc".toUpperCase(); 2.大写——小写 String bb = "ABC" ...
- 【php】LAMP中开启错误提示
vi /usr/local/php/etc/php.ini 查找display_errors 开启On即可
- mpvue小程序开发
查阅资料,看官方文档,知道mpvue是一个使用 Vue.js 开发小程序的前端框架(美团的开源项目).框架基于 Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compi ...
- 对EL自己以及对于param、header、cookie的相关应用的相关知识点的复习
EL表达式语言是一种可以计算和输出的java对象的简单语言. 列入请求语句为下面的方式:request.setAttribute("username","zhangsan ...
- rest_framework-分页
分页 from django.shortcuts import render # Create your views here. from rest_framework import serializ ...
- iphone se2的优缺点分析:
4月15日晚间消息,在毫无征兆的情况下苹果公司刚刚正式发布iPhone SE二代手机,这款传闻多年的产品终于出现,国内定价人民币3299元起.本周五开始预定,4月24日开始送货. Phone SE ...