1-Python - PEP8代码风格指南

PEP8是什么鬼?

首先把8去掉,看PEP是什么鬼,PEP是Python增强提案(Python Enhancement Proposal)的缩写,大家通过社区、邮件列表等方式 ,来为Python建言献策,官方最终会整理成标准文档,将一些规范在每个PEP的版本中体现。而PEP8就是第8个版本。
PEP8是Python对于代码的风格指南,给出了Python代码组成的编码约定。我们每个人都会形成自己的编码风格,但我们应尽量的参考此指南来编写Python代码,致力于代码更加规范化。
至于所谓的语法、语法、语法.....洒家绞尽脑汁,只能反复强调以下几项。

缩进、缩进、缩进

Python是一门用空格缩进来区分代码层次的语言,其实Python并没有强制要求你用Tab缩进或者用空格缩进,甚至空格按几个都没有强制要求。但PEP8规范建议四个空格为语句的缩进块。用缩进来控制不同的语句块是Python的一大特色,缩进也让Python的代码更优美,简洁。
在日常编辑中,当代码量增多,逻辑语句复杂时。因为缩进造成的bug层出不穷,比如造成逻辑判断的报错,造成程序的异常退出等,都是需要我们注意的。一般的,引起这些错误的原因,可能是Tab键和空格键在不同的编辑环境混用造成的,也可能是你逻辑判断时忘了缩进,或者多了一个缩进,不过没关系,只要我们在敲代码时,注意点,并且PyCharm在缩进错误时,会有提示的(一般为飘红)。
这里需要的注意的是:这个四个空格,可以手动敲4下空格键(废话!),也可以用键盘的Tab键(别问在哪,Q键左边,Capslock键上边)。但是,千万不要Tab和空格键混用,因为不同的编辑器对Tab键的解释是不同的,有的是默认4个空格,有的是8个。但空格永远是一致的!Python中不提倡用Tab来处理缩进,但一般编辑器的Tab都是4个空格,我们也能设置嘛!反正要是让洒家一直咔咔咔咔咔咔敲空格,还不如去搬砖(我擦,貌似暴露了什么)....
ps:如果要是想让代码往右侧缩进4个,就Tab一次就行了;要是让代码往左侧缩进4个空格,就Shift + Tab就完了。如果是整个代码块,选中所有即可。

老司机,不要再敲分号了!

不少有别的语言经验的大佬来学习Python时。每当敲完一行代码后。姿态非常优美的敲个分号作为结束!比如:

print('hello world');	# ×
print('hello world')	# √

Python不建议使用分号!除此之外,也不要用分号连接两条语句:

x = 3;print('hello world')

为了Python代码更加优美、简洁,请忘记分号吧!

就算是喝假酒上头,你也要保证你敲得符号都是英文状态下的

新手上路,你在行尾敲个分号Python也就认了。但是你来个中文的分号就不能忍了!所以,包括冒号、大于小于不等于、感叹号、逗号、括号、引号等等请使用英文状态下的符号。

注释

首先来看一条新闻,据不可消息称美程序员枪击4同事 竟因代码不写注释?。无论真实的动机如何!我们还是要按照规范来对模块、函数、 方法和行内注释使用正确的注释风格。
在Python中注释分为两种方式:

  • 单行注释(#号表示):一般用来对一行代码或者几行代码进行注释
  • 多行注释(三对引号表示):一般用与对较多的代码行或代码块进行注释,或者对整个文件进行描述,下图演示了单行注释和多行注释在实际编写代码中的示例。

别忘了,我们写的代码是给谁看的?你可能会说是给计算机?CPU?是个鬼鬼!是给人看的!代码只要符合规范,解释器都能屁颠屁颠交给CPU去执行。但是这个规范还不够,因为你不写注释,Python解释器就解释不了了?该有的空格没有就不行了?
我们要在一些重要的地方加上一些注释,让别人一眼就知道是干啥用的。就像产品的说明书一样。该有的不能少!

但也不能满篇都是注释!这就显得low了。要显得恰如其分,起到画龙点睛的作用!给人一种一看就有一种:我x,大佬啊,这应该裱起来帖床头,时时瞻仰啊!不能让人家一看:我x,这是什么?dogshit

关于引号

在Python中,单引号和双引号都能用来表示一个字符串,比如:

str1 = 'oldboy'  
str2 = "oldboy" 

在Python中,str1和str2是没有区别的,但是在有些情况下,却要注意的,例如你如何定义:I’m oldboy,这时候就要单双引号搭配使用了,如:

str3 = "I'm oldboy"  

这也是Python人性化的方面之一,至于复杂的用法,我们后面讲字符串的时候再说。

逻辑行与物理行

Python执行代码的顺序是从上到下顺序执行的,逻辑行,就是Python认识的单条语句,而物理行是我们认识的单条语句。当然你想在一个物理行上写多个逻辑行,那么你要用;来标明这种用法。

x = 5;print(x)  

但之前已经说过了,分号啥的还是忘记吧!Python希望我们每行都只写一条语句,这样使得代码更易读。

x = 5  
print(x)  

那么,你可能会说,这个一行万一放不下怎么办?那就用到了行连接\符号,如:

>>> name =  "I'm oldboy, I love pyt\  
... hon"  
>>> name  
"I'm oldboy, I love python"  

行长度

一般的,每行不超过80个字符,但也有例外:

  • 长的导入模块语句
  • 注释里的URL
  • 不要使用反斜杠连接行

Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号:

if (width == 0 and height == 0 and
         color == 'red' and emphasis == 'strong'):pass

如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:

x = ('This will build a very long long '
     'long long long long long long string')

空行

顶级定义之间空两行, 方法定义之间空一行。
顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行。


that's all,see also:

PEP 8 -- Style Guide for Python Code | Python风格规范

posted @ 2019-03-13 10:51  听雨危楼  阅读(1126)  评论(0编辑  收藏  举报