在开始学习Python之前,我们需要了解Python代码的规范,正所谓“无规矩不成方圆”,一行不合乎编程规矩的代码,会为你埋下不停报错的隐患。
提前知晓代码规范,可以帮助你在后续的学习中逻辑清晰,降低报错率的同时,还能为你养成良好的编程习惯。
话不多说,直接开讲,咱们先上目录。
编码
代码格式
import语句
空格
换行
docstring
编码
百度对编码的解释,是将信息从一种新式或格式转变为另一种形式的过程,在计算机硬件中,编码就是利用代码来表示各组数据资料,使计算机能够读懂这行代码并对信息进行分析和处理。
在Python的编程过程中,需要注意以下两点:
如无特殊情况, 文件一律使用 UTF-8 编码
如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识
代码格式
缩进
同一使用4个空格进行缩进,就是一个Tab
行宽
每行代码尽量不要超过80个字符(特殊情况下可超过,但最长不得超过120)
如果代码过长,可能存在着以下三种问题:
这在查看 side-by-side 的 diff 时很有帮助
方便在控制台下查看代码
太长可能是设计有缺陷
引号
编码过程中,如果需要计算机直接输出你想要的信息,我们就要用到引号,自然语言用双引号,机器标示用单引号,代码中多数使用单引号,举个例子:
自然语言 使用双引号 "..."
例如错误信息;直接采用这种方式"错误信息"
机器标识 使用单引号 '...' 例如 dict 里的 key
正则表达式 使用原生的双引号 r"..."
文档字符串 (docstring) 使用三个双引号 """......"""
空行
模块级函数和类定义之间空两行;
类成员函数之间空一行;
class A:
def __init__(self):
pass
def hello(self):
pass
def main():
pass
可以使用多个空行分隔多组相关的函数
函数中可以使用空行分隔出逻辑相关的代码
import语句
编写的正确方式,应该是分行书写
#正确的写法
import os
import sys
# 不推荐的写法
import sys,os
# 正确的写法
from subprocess import Popen, PIPE
import语句应该放在文件头部,置于模块说明及docstring之后,于全局变量之前;
import语句应该按照顺序排列,每组之间用一个空行分隔
import os
import sys
import msgpack
import zmq
import foo
导入其他模块的类定义时,可以使用相对导入
from myclass import MyClass
空格
在二元运算符两边各空一格[=,-,+=,==,>,in,is not, and]:
# 正确的写法
i = i + 1
submitted += 2
y = y * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
# 不推荐的写法
i=i+1
submitted +=2
y = y*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
函数的参数列表中,,之后要有空格
# 正确的写法
def complex(real, imag):
pass
# 不推荐的写法
def complex(real,imag):
pass
函数的参数列表中,默认值等号两边不要添加空格
# 正确的写法
def complex(real, imag=0.0):
pass
# 不推荐的写法
def complex(real, imag = 0.0):
pass
左括号之后,右括号之前不要加多余的空格
# 正确的写法
spam(ham[1], {eggs: 2})
# 不推荐的写法
spam( ham[1], { eggs : 2 } )
字典对象的左括号之前不要多余的空格
# 正确的写法
dict['key'] = list[index]
# 不推荐的写法
dict ['key'] = list [index]
不要为对齐赋值语句而使用的额外空格
# 正确的写法
x = 1
y = 2
long_variable = 3
# 不推荐的写法
x = 1
y = 2
long_variable = 3
换行
if/for/while一定要换行:
# 正确的写法
if foo == 'blah':
do_blah_thing()
# 不推荐的写法
if foo == 'blah': do_blash_thing()
禁止复合语句,即一行中包含多个语句:
# 正确的写法
do_first()
do_second()
do_third()
# 不推荐的写法
do_first();do_second();do_third();
使用反斜杠\换行,二元运算符+ .等应出现在行末;长字符串也可以用此法换行
session.query(MyTable).\
filter_by(id=1).\
one()
print 'Hello, '\
'%s %s!' %\
('Harry', 'Potter')
docstring
docstring文档字符串是一个重要的工具,用于解释文档程序,帮助你的程序文档更加易懂。
其最需要注意的规范有两点:
所有的公共模块、函数、类、方法,都应该写 docstring 。私有方法不一定需要,但应该在 def 后提供一个块注释来说明。
docstring 的结束"""应该独占一行,除非此 docstring 只有一行。
打个比方
del function():
'''say something here!
'''
pass
print(function.__doc__) # 调用doc
输出结果为
say something here!
不难发现,代码的规范是为了保证Python的简洁与优雅,养成这种良好的编程习惯,也方便我们日后对自己的代码进行复查检修。
以上便是今天分享Python代码规范中的简明概述,明天讲述的是代码规范中的注释,在正式进入我们的Python学习后,我会在每天的文章背后附上一个小练习题,并附上源码。
当然,还是希望你们先试着做一下,再与源码进行比对,查漏补缺。
最后,助你学有所成~
原文链接:Python代码规范——简明概述