首页 > 编程语言 >Python标准库中的编码风格整理

Python标准库中的编码风格整理

时间:2023-02-01 21:36:34浏览次数:41  
标签:编码 下划线 No Python 注释 导入 库中 Yes 空格


目的:提高源程序的质量和可维护性

缩进

  • 一律使用4个空格代表一层缩进,不允许使用Tab
  • 一行字符最多为79个,既在80列时换行
  • 对顺序排放的大块文本(文档字符串或注释),推荐将长度限制在72字符

折叠长行

使用Pyhon支持的圆括号,方括号和花括号内的行延续。如果需要,你可以在表达式周围增加一对额外的圆括号,但是有时使用反斜杠看起来更好,恰当得缩进可以看出延续的行
下面是一个示例(增加一对额外的圆括号):

if (2 > 1 and 4 > 2
and 8 < 99):
print('Ok!')

下面是更好的示例(使用反斜杠):

if 2 > 1 and 4 > 2 \
and 8 < 99:
print('Ok!')

行间距

  • 如果函数不在类中,则函数与函数之间,空两行
  • 如果函数在同一类中,则函数与函数之间,空一行。
  • 类和类之间,空两行

注释

修改代码同时修改相应的注释,保证注释与代码的一致性

注释块:通常由一个或多个由完整句子构成的段落组成,每个句子应该以句号结尾。注释块通常应用于跟随着一些(或者全部)代码并和这些代码有着相同的缩进层次。注释块中每行以’#‘和一个空格开始(除非他是注释内的缩进文本)。注释块内的段落以仅含单个’#'的行分割。注释块上下方最好有一空行包围(或上方两行下方一行,对一个新函数定义段的注释)。

行内注释:应该至少用两个空格和语句分开,它们应该以’#'和单个空格开始

文档字符串:为所有公共模块,函数,类和方法编写文档字符串。文档字符串对非公开的方法不是必要的,但你应该有一个描述这个方法做什么的注释。 对单行的文档字符串,结尾的"""在同一行也可以。

"""
训练
数据预处理+正则化(归一化)
用均值代替NaN
删除行
多个特 征全特征 (根据是否去掉某特征列)
预测
均值补全
根据不同特征列进行模型选择 (缺失多的话去掉特征)
因数据有些地方为空 可能多个SVM模型

路线PCA/AutoEncoder+SVM(RBF)
"""

标识符命名

以下的命名风格是众所周知的:

b(单个小写字母)
B(单个大写字母)
lowercase(小写)
lower_case_with_underscores(有下划线的小写)
UPPERCASE(大写)
UPPER_CASE_WITH_UNDERSCORES(有下划线的大写)
CapitalizedWords(或CapWords,CamelCase这样命名是因为可从字母的大小写分出单词)
mixedCase (与CapitalizedWords的不同在于首字母小写!)
single_trailing_underscore_(单个下划线结尾): 用于避免与Python关键词的冲突,例如:"Tkinter.Toplevel(master,class_='ClassName')"

应避免的名字:永远不要用字符’l’(小写字母el(就是读音,下同)),‘O’(大写字母oh),或’I’(大写字母eye)作为单字符的变量名。在某些字体中这些字符不能与数字1和0分辨。试着在使用’l’时用’L’代替。

模块名:模块应该是不含下划线的,简短的,小写的名字。

类名:使用CapWords约定。内部使用的类外加一个前导下划线。

函数名:应该为小写,可能用下划线风格单词以增加可读性。mixedCase仅被允许用于这种风格已经占优势的上下文(如:threading.py),以便保持向后兼容。

如果一个函数参数名字包括保留的关键字,通常在参数末加上下画线,而不要使用简写,因此"print_" 要比"prnt"好一些

模块导入

通常应该在单独的行中导入(import),例如:
No:
import sys, os

Yes:
import sys
import os

但是这样也是可以的:
from types import StringType, ListType

Imports 通常被放置在文件的顶部,仅在模块注释和文档字符串之后,在模块的全局变量和常量之前。

Imports应该有顺序地成组安放
1、标准库的导入(Imports )
2、相关的主包(major package)的导入(即,所有的email包在随后导入)
3、特定应用的导入(imports)

应该在每组导入之间放置一个空行

表达式和语句

紧挨着圆括号,方括号和花括号的,如:

  • Yes: ​​spam(ham[1], {eggs: 2})​
  • No: ​​spam( ham[ 1 ], { eggs: 2 } )​

紧贴在逗号,分号或冒号前的,如:

  • Yes: ​​if x == 4: print x, y; x, y = y, x​
  • No: ​​if x == 4 : print x , y ; x , y = y , x​

紧贴着函数调用的参数列表前开式括号(open parenthesis )

  • Yes: func(1)
  • No: func (1)

紧贴在索引或切片,开始的开式括号前的,如:

  • Yes: dict[‘key’] = list[index]
  • No: dict [‘key’] = list [index]

另外:
1、始终在这些二元运算符两边放置一个空格:赋值(=), 比较(==,<,>,!=,<=,>=,in,not in,is,is not),布尔运算 (and,or,not)。 始终保持二元运算符两边空格的一致。

submitted += 1

2、不要在用于指定关键字参数或默认参数值的’='号周围使用空格。

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)

其他建议

1、单个元素(singletons)的比较,如None 应该永远用:'is’或’is not’来做。当你本意是"if x is not None"时,对写成"if x"要小心。例如当你测试一个默认为None的变量或参数是否被设置为其它值时,这个值也许在布尔上下文(Boolean context)中是false!

2、对象类型的比较应该始终用isinstance()代替直接比较类型,例如:

  • No: if type(obj) is type(1)
  • Yes: if isinstance(obj, int):

3、对序列,(字符串,列表,元组),使用空列表是false这个事实,

  • Yes: if not seq:
    if seq:
  • No: if len(seq)
    if not len(seq)

4、不要用​​==​​来比较布尔型的值以确定是True或False:

  • Yes: if greeting:
  • No: if greeting == True:
  • Worse: if greeting is True:

END


标签:编码,下划线,No,Python,注释,导入,库中,Yes,空格
From: https://blog.51cto.com/u_14975310/6031859

相关文章

  • Python实现文件编码转换GB2312、GBK、UTF-8
    Python实现文件编码转换GB2312、GBK、UTF-81、查看文件编码格式importchardetfilename='./flash.c'withopen(filename,'rb')asf:data=f.read()encoding_ty......
  • Python网络编程—TCP客户端和服务器
    Python网络编程—TCP客户端和服务器客户端importsocket'''客户端创建步骤:1、创建网络套接字2、连接到目标IP地址和端口3、收发数据4、关闭套接字'''IP=socket.gethostnam......
  • Python连接MySQL数据库
    Python连接MySQL数据库安装MySQL参考链接安装NavicatPremium16参考链接连接MySQL安装库pipinstallpymysqlMySQL封装#!/usr/bin/envpython#-*-coding:ut......
  • Base64编码
    介绍Base64编码Base64是一种使用64个可打印字符来表示二进制数据的编码方式。Base64中的64个可打印字符包括:大小写字母a-z、阿拉伯数字0-9,这样共有62个字......
  • python语言命名规则
    和C/C++、Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性增强,易于自己和其他协作者在以后的拓展......
  • Python 笔记 2
    序列常用序列有:字符串,列表,元组,字典,集合此图提前展示列表列表的创建使用[]列表的创建与元素的提取法一:法二:list()创建[========]range()创建一个整数列表标准......
  • linux离线部署python项目
    离线部署直接在内网隔离的环境中。不能直接pipinstall或者apt-getinstall(Ubuntu、Debain)准备:与离线环境相同版本的服务器Python(web)项目依赖pipwheel强大的pip命......
  • Python之字典查找元素(3种方式)
    本文描述的是查找字典的某一个元素(字典遍历元素请点击->这里)上下文代码smart_girl={"name":"yuanwai","age":25,"sex":"女"} 第一种方式:[]注意:这种......
  • Base64编码
    介绍Base64编码Base64是一种使用64个可打印字符来表示二进制数据的编码方式。Base64中的64个可打印字符包括:大小写字母a-z、阿拉伯数字0-9,这样共有62个......
  • python连接mysql并使用
    由于mysql体积小,速度快,成本低,源码开放,所以一些中小型系统开发都采用mysql我们连接mysql采用的工具包是pymysql1.安装pymysqlpipinstallpymysql2.pymysql工作图......