工具 每分钟_black: 一个不妥协的Python代码格式化工具

代码可读性是评判代码质量的标准之一,有一个衡量代码质量的标准是 Martin 提出的 “WFT” 定律,即每分钟爆出 “WTF” 的次数。你在读别人代码或者做 Code Review 的时候有没有 “WTF” 冲动呢?

为了帮助开发者统一代码风格,Python 社区提出了 PEP8 代码编码风格,它并没有强制要求大家必须遵循,Python 官方同时推出了一个检查代码风格是否符合 PEP8 的工具,名字也叫 pep8,后来被重命名为了 pycodestyle。

看如下代码:

import time, datetimeclass ListNode:def __init__(self, val):self.val = valself.next = None# in python next is a reversed worddef reverse(self, head):prev = Nonewhile head:temp = head.nexthead.next = prevprev = headhead = tempa = [[1,u'hello world',0],[2,"hello python",0],]

这是一个不符合 PEP8 的代码段,用 pycodestyle 可检测有哪些地方不符合 PEP8 风格

$ pycodestyle link.py
link.py:1: [E401] multiple imports on one line
link.py:3: [E302] expected 2 blank lines, found 1

pycodestyle 提示我们有两处地方不符合规范,第一个是单行有多个 import,第二个是类与模块之间需要空两行,这只是一个简单代码示例,真正的业务代码可能有上百行甚至几百行,如果我们要根据 PEP8 规范逐个进行修改建议会非常耗时,而我们的开发过程中,如果时刻关注每一行代码是否完全遵循 PEP8,将影响开发效率。

而有这么一款工具 Black,号称不妥协的代码格式化工具,为什么叫不妥协呢?因为它检测到不符合规范的代码风格直接就帮你全部格式化好,根本不需要你确定,直接替你做好决定。它也是 requests 作者最喜欢的工具之一

使用非常简单,安装成功后,和其他系统命令一样使用,只需在 black 命令后面指定需要格式化的文件或者目录就ok

black link.py

b57f0b080327bda836c4dea0bf29dee2.png

这是一款简而美的工具,它并不是完全按照 PEP8 规范来格式化,比如默认每行代码的字符数是88个,当然你可以通过参数 -l 自定义长度,能一行显示完成的代码会放在一行,比如有多个元素的列表

# in:l = [1,2,3,
]# out:l = [1, 2, 3]

后者把多个元素放在一行,显然更易读,而且代码更紧凑,Black 是 PEP8 的严格子集。目前我的最佳实践方式就是 PyCharm 自带的格式化工具配合 Black 使用。因为 Black 也支持集成到 Pycharm 中来。

如何集成 Pycharm

1、 安装black:

pip install black

2、 找到 black 的安装路径

 $ which black  # linux/mac$ where black  # windows

3、 添加扩展工具,打开 Preferences->Tools->External Tools ,添加一个新的扩展工具

f1ff99b42673c595f27ca883871a9325.png

4、选择 Tools-> External Tools-> Black 即可对代码进行格式化,当然,你还可以为其指定一个快捷键,使操作更方便。

c76e3a06084722032f33130fe29b39da.png

值得注意的是,该工具只支持 Python3.6 环境,同时还处在 beta 版本,更多信息可参考文档: https://github.com/ambv/black

首发链接:https://foofish.net/black.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Spring Rest和Spring Data JPA和H2以及Spring Boot示例的Restful API

你好朋友, 在本教程中,您将学习以下内容: 1.在Spring Boot中配置Spring Rest,Spring Data JPA和H2 2.使用Spring Boot创建Springful服务端点的Spring Rest,Spring Data JPA和H2的示例 3.使用Swagger测试Restful端点…

计算机IP地址pin,打印机的ip地址在机身上哪里,打印机的pin在哪看

打印机的ip地址在机身上哪里,打印机的pin在哪看时间:2021-04-19 10:38:04打印机是我们日常工作中必备的公办用品,但是对于刚接触打印机的电脑小白来说,打印机的网络设置可不简单,比如IP地址、pin码,他们可能…

开机启动失败_电脑常见开机引导错误的解决方法

电脑在开机启动过程中,经常会出现开机失败的故障,开机失败比较常出现在开机引导项错误的问题上,比如引导文件没了,硬盘有问题等等,有些小问题重启几遍可以解决,有些问题就只能修复。这边小编跟大家整理分享…

2020非全日计算机博士,在职攻读博士是不是非常难,免考在职博士和非全日博士有什么不同...

博士的含金量我们自然不容忽视,但博士又不是说三天打鱼两天晒网就可搞定的,都是要经过长久的沉淀以及耐心才能坚持下来的,博士少说也要读个四到五年方可毕业,但也有个别优秀的三年内就完成学业待着自己的成功找到了丰厚的薪资待遇…

cru使用教程_教程|Crust 测试网 Maxwell 1.0 用户指南

“Crust 实现了去中心化存储的激励层协议,适配包括 IPFS 在内的多种存储层协议,并对应用层提供支持。同时 Crust 的架构也有能力对去中心化计算层提供支持,构建分布式云生态。”Crust Network 首个公开测试网——Maxwell 1.0 版本正式上线&am…

分数乘法计算机题,《分数乘法》测试题

第1篇:《分数乘法》测试题一、填空:1、3/103/103/10()/()()/()7/207/207/207/20()/()()/()2、选择“>、<或=”。1/410><1/43/51><3/57/120><7/127…

Hibernate事实:有利于双向集vs列表

Hibernate是一个很棒的ORM工具,它极大地简化了开发,但是如果您想正确地使用它,则有很多陷阱。 在大中型项目中,双向父子关联非常常见,这使我们能够浏览给定关系的两端。 在控制关联的持久/合并部分时,有两…

创建二级索引_Mysql创建索引

零:文章概要这篇文章,主要是和大家一起去了解 索引,然后一起使用CREATE INDEX语法给数据库中的表创建一个索引。一:先拿电话薄做个类比假如,一个电话薄里面包含了一个城市的所有人的姓名和电话号码。那么,想找到Bob Ca…

转hdmi_苹果本轻松接大屏,毕亚兹雷电接口转HDMI/VGA转换器评测

作为上班族,日常开会加出差,经常需要用到笔记本连接投影仪投屏。很多小伙伴为了高效办公,使用的都是性能强劲但是设计轻薄的笔记本产品,最常见的就是苹果笔记本。但是比较尴尬的是,目前可以使用的绝大部分苹果笔记本电…

计算机专业教学工作小结,计算机专业教学的工作总结

本人在教育教学上,爱岗敬业,严谨治教,热爱学生,努力做到把学生教好,让学生成功成才,优秀教师应有的职责。因此我在教育教学方面注意了以下几个问题,现作工作总结如下:一、思想方面本…

使用Java流查询数据库

在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够处理现有数据库中的数据,而无需编写单行SQL(或类似的语言,例如HQL),也无需花费数小时将所有内容放在一起。 准备好应用程序之后&…

2017计算机信息技术,2017年一级计算机信息技术及应用考试试题级答案[权威资料]...

2017年一级计算机信息技术及应用考试试题级答案 本文档格式为WORD,感谢你的阅读。最新最全的 学术论文 期刊文献 年终总结 年终报告 工作总结 个人总结 述职报告 实习报告 单位总结 演讲稿2017年一级计算机信息技术及应用考试试题级答案一、基础知识题(共45分,每题1…

sigquit信号默认忽略吗_linux下的信号列表

我们运行如下命令,可看到Linux支持的信号列表:$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD18) SIGC…

恐鬼症不显示服务器区域,恐鬼症 steam版【简体中文】【4.34GB】

游戏介绍《恐鬼症(Phasmophobia)》是一款玩法十分精彩的冒险解谜类游戏,这款游戏支持4人联机对战,共同寻找隐藏的秘密,游戏的过程比较惊悚,需要玩家拥有强大的心里承受能力,气氛和渲染都十分的优质,游戏由K…

进程比线程更多资源_为什么我们不应该使用比我们需要更多的线程

进程比线程更多资源总览 有一个普遍的论点,因为我们有很多核心,并且将来还会有更多核心,所以我们必须使用它们。 我们只是需要找到使用它们的最佳方法,而仅仅是因为我们不能意味着我们应该这样做。 我们的目标是什么?…

ajax默认什么方法,ajax设置默认值ajaxSetup()方法

$(function(){//设置全局 jQuery Ajax全局参数$.ajaxSetup({type:"POST",async:false,cache:false,dataType:"JSON",error:function(jqXHR,textStatus,errorThrown){switch(jqXHR.status){case(500):alert(服务器系统内部错误);break;case(401):alert(未登…

Java谓词的延迟执行

在先前的文章“ 用Java的供应商延迟执行 ”和“ Java的消费者延迟执行 “,我看着很容易地通过推迟标准Java API接受,分别在Java执行供应商 S和消费者秒。 在本文中,我将对标准JDK提供的API如何通过标准功能接口Predicate允许延迟执行进行类似…

android实现评论列表_【Android视图效果】分组列表实现吸顶效果

效果图效果图分析先来分析一下,可以看到这是一个按月份分组的2行图片列表,列表顶部一个悬浮栏,会随着列表滑动而刷新,点击顶部栏,弹出了一个筛选框。思路1.列表部分可以用RecyclerViewGridLayoutManager,月…

用ajax写无限循环,ajax无限循环

// 猜你喜欢的无限加载(function(){var content document.getElementsByClassName("content")[0];var footer document.getElementsByTagName("footer")[0];var winh window.innerHeight - footer.offsetHeight;var ul document.getElementById("…

JDK 11:发行候选更新和OpenJDK JDK 11 LTS

JDK 11是预定被释放的一般可用性上周二,9月25日2018年2018年8月16日马克莱因霍尔德消息上OpenJDK的JDK-dev邮件列表宣布“ JDK 11现在在候选发布版阶段 。” 但是,Reinhold在2018年8月17日同一封邮件列表中的消息中提供了更新的详细信息,他在…