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',
)
python新手代码图案如何保存空格或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⼯具排版过的,怎么样,是不是优雅简洁了很多。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论