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: