python自动排版_你熟悉Python的代码规范吗?如何一键实现代码排版
你熟悉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的代码规范吗?如何一键实现代码排版相关推荐
- python自动控制程序_巧用 python 脚本控制你的C程序
python是一门艺术语言,除了开发桌面程序,还能够开发网络应用,数据库应用,还可以代替shell编写一些的实用脚本,本文主要讲述了如何利用 python 程序控制你的 C 程序的行为. 作为例子,本 ...
- 华泰证券 python 自动交易_怎样用 Python 写一个股票自动交易的程序?(不包含交易算法)?...
前言 股票或期货的价格波动,总会有一些可以规律可以遵循的.其中,"背离"也算是其中的一种,并且可以作为判断趋势结束或阶段调整的预警信号. 通常情况下,我们所说的"背离&q ...
- python自动打开_如何用Python自动打开和关闭Tor浏览器
我在玩网页抓取和Tor.在 我设法让它同时使用requests和{}+PhantomJS.但是,我需要打开Tor浏览器才能使脚本工作.在 这就是为什么我现在试图自动化整个过程:也就是说:自动打开Tor ...
- python自动抢单_【Python成长之路】基于sikuli jar包,实现淘宝自动抢单功能(1)...
[写在前面] 记得节前,西哥问我能不能帮忙写个淘宝自动抢单的功能.其实之前就有提到过sikuli IDE工具,可以很方便地实现图形化自动化,只是当时并没有真正用python实现. 因此刚好借这个机会, ...
- python可以用来编写计算机网络程序吗_不必熟悉python或R编程语言,6步执行计算机视觉应用程序...
全文共1260字,预计学习时长7分钟 图源:morish 很多人都能运行操作计算机视觉应用程序.是的,学习并执行它并不难,现在有很多库可以用来执行如此强大的计算机视觉应用程序. 你有没有关注最近有没有 ...
- python自动控制程序_使用 Python 自动执行 ANSYS APDL
有时候,我们希望将有限元求解和其它程序相结合,以实现设计自动化或优化.本文以 Python 函数运行 一个 APDL 脚本,实现检查输出文件是否有错误为例,提供一个结合思路. 1. 什么是 APDL ...
- 如何用python编写问卷调查_如何通过Python实现自动填写调查问卷
0X00 前言 快开学了,看到空间里面各种求填写调查问卷的,我才想起来貌似我也还没做.对于这种无意义的问卷,我是不怎么感冒的,所以我打算使用"特技"来完成,也就是python,顺便 ...
- python自动化工业_五大python自动化框架学习
1.Robot Framework 作为最重要的Python测试框架之一,Robot Framework主要被用在测试驱动(test-driven)类型的开发与验收中.虽然是由Python开发而来,但 ...
- python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...
image.png 网上现在Python学习资料有很多,但是很杂.很多初学Python的朋友就不知道该怎么去抉择,那些是自己当下所需要的. 刚好朋友是北大的博士,在IT行业也工作八年了.就把他学习Py ...
- python timeit用法_十大Python开发技巧
Python开发指南, 超级实用足以让您震撼 > Photo by Christina Morillo from StockSnap 时不时地,当我了解Python的新功能时,或者我发现其他一些 ...
最新文章
- 模板1.0 -- 模板基本原理
- springboot 启动类注解 @SpringBootApplication 和 @ComponentScan 的问题
- 文巾解题455. 分发饼干
- 如何在python中对列表套列表进行排序_如何实现对Python中列表的排序?
- 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。...
- 词语搜索算法思想 - 第五步 结构实现
- C的|、||、、、异或、~
- 11 个简练的 Java 性能调优技巧
- Java基础学习总结(153)——HashMap、Hashtable、ConcurrentHashMap的原理与区别
- html2canvas 在qq保存失败_QQ的截图功能,没想到这么好用!
- ACM 学习笔记(七) 贪心
- 《图解HTTP》— 安全的HTTPS
- 善用VS中的Code Snippet来提高开发效率
- web前端面试题(十一)之如何解决跨域问题?
- Tcl 语言——流程控制篇
- 整合dubbo报错严重 Exception sending context initialized event to listener instance of class 解决
- 香农三大定理、香农公式
- 面试,你准备好了吗(上集)
- 001-查看ts版本、安装、卸载
- 斗地主的两种发牌方式