黑马程序员技术交流社区

标题: 【成都校区】常用的python编码规范PEP8规则 [打印本页]

作者: 小刀葛小伦    时间: 2019-9-19 16:51
标题: 【成都校区】常用的python编码规范PEP8规则
本帖最后由 小刀葛小伦 于 2019-9-19 16:53 编辑

作为一个IT技术开发者,程序员的素质必备之一就是,编码规范。不规范的代码利用价值、维护价值很低,说的不好听一点就是一堆垃圾来的,并且极大的影响了别人读取和修改更新程序代码的效率。甚至在IT开发界提出了“规范第一,效率第二”的口号。这就是我们要学习python编码规范的原因。
python 编码规范主要有以下5个方面:
代码布局——导入——表达式和语句中的空格——注释——命名约定
1、代码布局:上下左右总体的布局
(1)缩进:4个空格一个缩进层次,通常在if语句、for语句和while语句等等后面,一个【Tab】键等于4个空格。
(2)行的最大长度:一般每行不超过80字符。
(3)空行:用两行空行分割顶层函数和类的定义;
        类内方法的定义用单个空行分割;
        当空行用于分割方法(method)的定义时,在'class'行和第一个方法定义之间也要有一个空行.

2、导入:主要有三个方面
(1)单独的行中导入(Imports):一行只能有一个模块,例如:
No: import sys, os
Yes: import sys
import os
(2)从一个模块中导入多个子模块:
from subprocess import Popen, PIPE
from subprocess import *  # 导入所有子模块
(3)把模块重新自定义为新的名字:是为了简化模块名
  例如:将多线程模块threading重命名为th,以后调用就使用th
import threading as th

3、表达式和语句中的空格:
(重点、难点也是细节,要多练才能记住)
(1)逗号,分号或冒号后要空一格,如:
错误:
"if x == 4:print x,y;x,y = y,x"
要修改成:"if x == 4: print x, y; x, y = y, x"

(2)要紧挨着圆括号,方括号和花括号的,如:
错误:"spam( ham[ 1 ], { eggs: 2 } )"
要修改成:"spam(ham[1], {eggs: 2})"

(3)要紧贴在索引或切片(slicing?下标?)开始的开式括号前,如:
错误:"dict ['key'] = list [index]".
要修改成:"dict['key'] = list[index]".

(4)在赋值(或其它)运算符周围,用于和其它并排的一个以上的空格,如:
错误:
x =             1  
y =             2
long_variable = 3

正确:
x = 1
y = 2
long_variable = 3

(5)始终在这些二元运算符两边放置一个空格:
赋值(=), 比较(==, <, >, !=, <>, <=, >=, 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)

错误:
i=i+1
submitted+=1
x=x*2-1
hypot2=x*x + y*y
c=(a+b)*(a-b)

(6)不要在用于指定关键字参数或默认参数值的'='号周围使用空格,例如:
Yes:
def complex(real, imag=0.0):
return magic(r=real, i=imag)

No:
def complex(real, imag = 0.0):
return magic(r = real, i = imag)

(7)不要将多条语句写在同一行上.
正确:
if foo == 'blah':
    do_blah_thing()
    do_one()
    do_two()
    do_three()

错误:
if foo == 'blah': do_blah_thing()
do_one(); do_two(); do_three()

4、注释:单行和多行注释
行内注释:
一个行内注释是和语句在同一行的注释.行内注释应该谨慎适用。行内注释应该至少用两个空格和语句分开,它们应该以’#'和单个空格开始。
例子:
a, b = b, a  # 行内注释
多行注释:
1、注释块通常应用于跟随着一些(或者全部)代码并和这些代码有着相同的缩进层次。注释块中每行以’#'和一个空格开始(除非他是注释内的缩进文本)。
2、注释块上下方最好有一空行包围(或上方两行下方一行,对一个新函数定义段的注释)
例子:
# 多行注释
# 多行注释
# 多行注释
def fun(a, b):
        # 多行注释
        # 多行注释
        c = a + b
        return c
k = fun(2, 3)
print(k)
文档注释:
三个单引号: ‘’’ 注释的内容 ‘’’
三个双引号:""" 注释的内容 “”"

例子:
"""
课题:函数使用
作者:Donald@Lxz
日期:2019-1-25
问题描述:
xxxxxxxxxxxxxxx
"""

def fun(a, b):
        c = a + b
        return c
k = fun(2, 3)
print(k)

5、命名:
(1)模块名:模块应该是不含下划线的,简短的,小写的名字.例如:re/time/pymysql
(2)类名:几乎没有例外,类名总是使用首字母大写单词串(CapWords)的约定。例如:MyCat/WeChat
(3)异常名:如果模块对所有情况定义了单个异常,它通常被叫做"error"或"Error". 似乎内建(扩展)的模块使用"error"(例如:os.error), 而 Python 模块通常用"Error" (例如: xdrlib.Error).
(4)函数名:函数名应该为小写,可能用下划线风格单词以增加可读性. mixedCase 仅被允许用于这种风格已经占优势的上下文(如: threading.py) 以便保持向后兼容.
(5)方法名和实例变量:
这段大体上和函数相同:通常使用小写单词,必要时用下划线分隔增加可读性;使用一个前导下划线仅用于不打算作为类的公共接口的内部方法和实例变量;使用两个前导下划线以表示类私有的名字.









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2