你熟悉Python的代码规范吗?如何一键实现代码排版

首先,各个编程语言都有自己的代码规范,统一的代码规范,不仅能提高代码的可读性,还能提升代码的维护性,

团队内部的集成也会更加顺畅,同时也能更轻易发现代码的问题。团队编程的目标,所有人写的代码像一个人写出来的。

Python之禅

都说Python是一门优雅的语言,那就更少不了装饰和美化。Python在开发之初,已经规范了代码的整体原则,那就是Python之禅。

在交互式解释器中输入import this就会显示 Tim Peters 的 “The Zen of Python”

整体意思就是Python以优雅简洁为目标。具体翻译,大家可以参考下:

优美胜于丑陋(Python 以编写优美的代码为目标)

明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)

简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)

复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)

扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)

间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)

可读性很重要(优美的代码是可读的)

即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)

当存在多种可能,不要尝试去猜测

而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)

虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )

做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)

如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)

命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)

官网推荐的编码规范

目前比较通用的是pep8规范,大家可以根据下方的官方文档进行学习,其中的PEP8是Style Guide for Python Code,译为:Python代码样式指南。

pep8 官网规范地址

下面是pep8规范中主要的一些要求:

每级缩进用4个空格。

# 对准左括号

foo = long_function_name(var_one, var_two,

var_three, var_four)

# 不对准左括号,但加多一层缩进,以和后面内容区别。

def long_function_name(

var_one, var_two, var_three,

var_four):

print(var_one)

# 悬挂缩进必须加多一层缩进.

foo = long_function_name(

var_one, var_two,

var_three, var_four)

右边括号也可以另起一行。有两种格式,建议第2种。

# 右括号不回退,个人不推荐

my_list = [

1, 2, 3,

4, 5, 6,

]

result = some_function_that_takes_arguments(

'a', 'b', 'c',

'd', 'e', 'f',

)

# 右括号回退

my_list = [

1, 2, 3,

4, 5, 6,

]

result = some_function_that_takes_arguments(

'a', 'b', 'c',

'd', 'e', 'f',

)

空格或Tab?在 list, dict, tuple, set, 参数列表的 , 后面加一个空格

在 dict 的 : 后面加一个空格

空格是首选的缩进方法。

Tab仅仅在已经使用tab缩进的代码中为了保持一致性而使用。

Python 3中不允许混合使用Tab和空格缩进。

最大行宽限制所有行的最大行宽为79字符。

文本长块,比如文档字符串或注释,行长度应限制为72个字符。

空行function 和 class 顶上两个空行

class 的 method 之间一个空行

函数内逻辑无关的段落之间空一行,不要过度使用空行

不要把多个语句写在一行,然后用 ; 隔开

if/for/while 语句中,即使执行语句只有一句,也要另起一行

导入在单独行推荐:

import os

import sys

from subprocess import Popen, PIPE

导入位置:在文件的顶部,在模块注释和文档字符串之后,在模块全局变量和常量之前。

导入顺序:标准库,相关的第三方库,本地库。各组的导入之间要有空行。

禁止使用通配符导入:通配符导入(from import *)应该避免,因为它不清楚命名空间有哪些名称存,混淆读者和许多自动化的工具。

括号里边避免空格

# 括号里边避免空格

#推荐

spam(ham[1], {eggs: 2})

# 不推荐

spam( ham[ 1 ], { eggs: 2 } )

逗号,冒号,分号之前避免空格

if x == 4: print x, y; x, y = y, x

函数调用的左括号之前不能有空格

# 推荐

spam(1)

dct['key'] = lst[index]

spam (1)

dct ['key'] = lst [index]

赋值等操作符前后不能因为对齐而添加多个空格

x = 1

y = 2

variable = 3

二元运算符两边放置一个空格

涉及 =、符合操作符 ( += , -=等)、比较( == , < , > , != , <> , <= , >= , in , not in , is , is not )、布尔( and , or , not )。

优先级高的运算符或操作符的前后不建议有空格。

i = i + 1

submitted += 1

x = x*2 - 1

hypot2 = x*x + y*y

c = (a+b) * (a-b)

关键字参数和默认值参数的前后不要加空格

def complex(real, imag=0.0):

return magic(r=real, i=imag)

包和模块名

模块名要简短,全部用小写字母,可使用下划线以提高可读性。包名和模块名类似,但不推荐使用下划线。

避免采用如下名字

决不要用字符'l'(小写字母el),'O'(大写字母oh),或 'I'(大写字母eye) 作为单个字符的变量名。一些字体中,这些字符不能与数字1和0区别。用'L' 代替'l'时。

有什么工具,可以自动帮我们,快速实现简洁优雅,符合pep8规范的代码呢?

autopep8工具

autopep8是一个开源的命令行工具,它能够将Python代码自动格式化为PEP8风格,可以继承到pycharm中,从而便捷的实现代码排版。

autopep8可以直接使用pip进行安装:

pip install autopep8

PyCharm -> Preferences -> Tools -> Extends Tools -> 点击+加号

在Create Tool的设置如下:

name:随意写一个,建议写autopep8

Programs:autopep8 (前提是你已经安装了哦)

Parameters:--in-place --aggressive --aggressive $FilePath$

Working directory:$ProjectFileDir$

Output filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

在pycharm代码编辑界面,鼠标右键,选择autopep8就能对当前代码进行自动排版。

比如下面这段代码,左侧是原始代码,右侧代码是经过autopep8工具排版过的,怎么样,是不是优雅简洁了很多。

python自动排版_你熟悉Python的代码规范吗?如何一键实现代码排版相关推荐

  1. python自动控制程序_巧用 python 脚本控制你的C程序

    python是一门艺术语言,除了开发桌面程序,还能够开发网络应用,数据库应用,还可以代替shell编写一些的实用脚本,本文主要讲述了如何利用 python 程序控制你的 C 程序的行为. 作为例子,本 ...

  2. 华泰证券 python 自动交易_怎样用 Python 写一个股票自动交易的程序?(不包含交易算法)?...

    前言 股票或期货的价格波动,总会有一些可以规律可以遵循的.其中,"背离"也算是其中的一种,并且可以作为判断趋势结束或阶段调整的预警信号. 通常情况下,我们所说的"背离&q ...

  3. python自动打开_如何用Python自动打开和关闭Tor浏览器

    我在玩网页抓取和Tor.在 我设法让它同时使用requests和{}+PhantomJS.但是,我需要打开Tor浏览器才能使脚本工作.在 这就是为什么我现在试图自动化整个过程:也就是说:自动打开Tor ...

  4. python自动抢单_【Python成长之路】基于sikuli jar包,实现淘宝自动抢单功能(1)...

    [写在前面] 记得节前,西哥问我能不能帮忙写个淘宝自动抢单的功能.其实之前就有提到过sikuli IDE工具,可以很方便地实现图形化自动化,只是当时并没有真正用python实现. 因此刚好借这个机会, ...

  5. python可以用来编写计算机网络程序吗_不必熟悉python或R编程语言,6步执行计算机视觉应用程序...

    全文共1260字,预计学习时长7分钟 图源:morish 很多人都能运行操作计算机视觉应用程序.是的,学习并执行它并不难,现在有很多库可以用来执行如此强大的计算机视觉应用程序. 你有没有关注最近有没有 ...

  6. python自动控制程序_使用 Python 自动执行 ANSYS APDL

    有时候,我们希望将有限元求解和其它程序相结合,以实现设计自动化或优化.本文以 Python 函数运行 一个 APDL 脚本,实现检查输出文件是否有错误为例,提供一个结合思路. 1. 什么是 APDL ...

  7. 如何用python编写问卷调查_如何通过Python实现自动填写调查问卷

    0X00 前言 快开学了,看到空间里面各种求填写调查问卷的,我才想起来貌似我也还没做.对于这种无意义的问卷,我是不怎么感冒的,所以我打算使用"特技"来完成,也就是python,顺便 ...

  8. python自动化工业_五大python自动化框架学习

    1.Robot Framework 作为最重要的Python测试框架之一,Robot Framework主要被用在测试驱动(test-driven)类型的开发与验收中.虽然是由Python开发而来,但 ...

  9. python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...

    image.png 网上现在Python学习资料有很多,但是很杂.很多初学Python的朋友就不知道该怎么去抉择,那些是自己当下所需要的. 刚好朋友是北大的博士,在IT行业也工作八年了.就把他学习Py ...

  10. python timeit用法_十大Python开发技巧

    Python开发指南, 超级实用足以让您震撼 > Photo by Christina Morillo from StockSnap 时不时地,当我了解Python的新功能时,或者我发现其他一些 ...

最新文章

  1. 模板1.0 -- 模板基本原理
  2. springboot 启动类注解 @SpringBootApplication 和 @ComponentScan 的问题
  3. 文巾解题455. 分发饼干
  4. 如何在python中对列表套列表进行排序_如何实现对Python中列表的排序?
  5. 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。...
  6. 词语搜索算法思想 - 第五步 结构实现
  7. C的|、||、、、异或、~
  8. 11 个简练的 Java 性能调优技巧
  9. Java基础学习总结(153)——HashMap、Hashtable、ConcurrentHashMap的原理与区别
  10. html2canvas 在qq保存失败_QQ的截图功能,没想到这么好用!
  11. ACM 学习笔记(七) 贪心
  12. 《图解HTTP》— 安全的HTTPS
  13. 善用VS中的Code Snippet来提高开发效率
  14. web前端面试题(十一)之如何解决跨域问题?
  15. Tcl 语言——流程控制篇
  16. 整合dubbo报错严重 Exception sending context initialized event to listener instance of class 解决
  17. 香农三大定理、香农公式
  18. 面试,你准备好了吗(上集)
  19. 001-查看ts版本、安装、卸载
  20. 斗地主的两种发牌方式

热门文章

  1. Git Bash复制粘贴快捷键失效问题
  2. Zynga任命Noel Watson为董事会成员
  3. java韩信点兵_韩信点兵练习题(死循环的应用)
  4. 报The requested URL / was not found on thisserver. 网站打开出现404
  5. 蜗牛学院:中国人,努力获得了荣誉却要压抑克制
  6. MPC+MPD听音乐
  7. 5G China unicom 一般性异常处理
  8. 基于java的出租车预约网站
  9. 视频工具箱android,小熊视频工具箱
  10. 【网络安全】前端程序员务必掌握的图片防盗链