python代码规范整理
规范参考源:
1.pep8(python代码样式规范):中文文档 https://blog.csdn.net/ratsniper/article/details/78954852
2.pep257(python文档字符串相关约定):文档地址 https://github.com/qiuxiang/pep/blob/master/peps/257.md
3.pep20(python的禅宗) :文档地址 https://www.python.org/dev/peps/pep-0020/
代码样式规范(pep8):
1、行缩进:tap键(4个空格)
隐式行连接缩进:
1.对齐缩进
foo = long_function_name(var_one,var_two,
var_three, var_four,var_five)
2.层级缩进
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
3. \
with open('test1.txt','w') as f1, \
open('test2.txt','w') as f2;
f1.write('hello')
f2.write('python')
2.单行字符限制:
1.所有行限制的最大字符数为79;
2.没有结构化限制的大块文本(文档字符或注释);
每行最大字符数限制在72,可根据需要调整,建议不超过100
3.空行:
顶级函数与类的定义之间有两行空行。
类顶部的函数定义之间有一行空行。
4.源文件编码方式:
python核心发布的代码中应该自始至终使用UTF-8(python2默认是ASCII编码)
python3种不应有编码声明
5.注释
与代码相矛盾的注释比没有注释还糟,当代吗更改时,优先更新对应的注释;
如果注释很短,结尾句号可以省略。块注释一般由一个完整的句子或多个段落组成,并且每句结束有句号,在句号结束的时候应该使用两个空格
在非英语国家的python程序员,请使用英文写注释,除非你120%的确信你的代码不会被使用其他语言的人阅读
行内注释:
#与代码间至少要有两个空格分隔,注释由#和一个空格开始。有节制地使用行内注释
response=requests.get('https://www.baidu.com') # 请求百度首页
块注释
通常用于跟随它们的某些或全部代码,并缩进到与代码相同的级别。块注释的每一行开头使用一个#和一个空格(除非块注释内部缩进文本)。
块注释内部的段落通常只有一个#的空行分隔。
def add_num(a,b,c):
# 此函数的作用为打印a,b,c三个数相加之和,并返回
#
# 通过format进行格式化输出结果
print('三个数相加的结果{}'.format(a+b+c))
PEP257
文档注释(文档说明):PEP257描述了写出好的文档说明相关的约定。
文档注释应当使用:常用3个双引号"""quotes"""来包裹
要为所有的公共模块,函数,类,以及方法编写文档说明。
非公共的方法没有必要添加注释文档,但是应该有一个描述方法具体作用的注释。这个注释应该在def那一行之后
def get(url, params=None, **kwargs):
r"""Sends a GET request. :param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary, list of tuples or bytes to send
in the query string for the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response <Response>` object
:rtype: requests.Response
""" kwargs.setdefault('allow_redirects', True)
return request('get', url, params=params, **kwargs)
单行文档注释:"""quote""" ,一个简短的句子,引号和文字在同一行
多行文档注释:多行文档字符串有一个摘要组成,就像一行文档字符串,后跟一个空行,后面是更详细的描述,多行文档说明使用的结尾三引号应该自成一行
提取文档注释:对象的__doc__属性
import requests
print(requests.__doc__)
print(requests.get.__doc__)
6、模块和包相关规范
导入代码位置:导入常常位于文件顶部,在文档字符串(注释)之后,在模块的全局变量和常量之前
导入顺序分组:
1.标准库导入
2.相关的第三方库导入
3.特定的本地应用/库导入,
推荐: import os
import sys
不推荐: import sys, os
允许: from subprocess import Popen, PIPE
推荐绝对路径:from mypkg.sibling import example
允许相对路径:from . import sibling
from .sibling import example
4.__all__
, __author__
, __version__
等这样的模块级内置属性,应该放在文档字符串的后面,以及除from __future__
之外的import表达式前面。
"""This is the example module. This module does stuff.
""" from __future__ import barry_as_FLUFL __all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles' import os
import sys
7、命名规范
变量命名
永远不要使用字母‘l’(小写的L),‘O’(大写的O),或者‘I’(大写的I)作为单字符变量名。
在有些字体里,这些字符无法和数字0和1区分,如果想用‘l’,用‘L’代替。
函数命名
函数名应该小写,如果想提高可读性可以用下划线分隔。
大小写混合仅在为了兼容原来主要以大小写混合风格的情况下使用(比如 threading.py),保持向后兼容性。
包名或模块名
模块应该用简短全小写的名字,如果为了提升可读性,下划线也是可以用的。Python包名也应该使用简短全小写的名字,但不建议用下划线。
类名
类名一般使用首字母大写的约定。
在接口被文档化并且主要被用于调用的情况下,可以使用函数的命名风格代替。
注意,对于内置的变量命名有一个单独的约定:大部分内置变量是单个单词(或者两个单词连接在一起),首字母大写的命名法只用于异常名或者内部的常量。
类里面的函数与方法参数
始终要将 self 作为实例方法的的第一个参数。
始终要将 cls 作为类静态方法的第一个参数。
如果函数的参数名和已有的关键词冲突,在最后加单一下划线比缩写或随意拼写更好。因此 class_ 比 clss 更好。(也许最好用同义词来避免这种冲突)
常量
常量通常定义在模块级,通过下划线分隔的全大写字母命名。例如: MAX_OVERFLOW 和 TOTAL。
最后附上python之禅中文版:
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
python代码规范整理的更多相关文章
- 老李分享:pep8 python代码规范
老李分享:pep8 python代码规范 什么是PEPPEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书 . PEP8 译者:本文基于 20 ...
- python代码规范与标准库参考
python代码规范与标准库参考 python代码规范参考文献: http://www.runoob.com/w3cnote/google-python-styleguide.html https:/ ...
- Python代码规范问题及解决
Python代码规范问题及解决 为了养成使用Python编程好习惯,尽量保证自己写的代码符合PEP8代码规范,下面是过程中报出的警告及解决方法,英文有些翻译不太准确见谅,会不断更新: PEP 8 只是 ...
- PEP8 Python 编码规范整理(转)
决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...
- python——PEP8 Python 编码规范整理
决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...
- PEP8 Python 编码规范整理(Python)
add by zhj: 这个是豆瓣网友整理的PEP8,算是PEP8的一个简易版本,因为原PEP8内容太多,所以建议先看这篇文章,然后再看PEP8中文翻译 原文:http://www.douban.co ...
- python 编码规范整理
PEP8 Python 编码规范 一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不要使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号. ...
- Python代码规范之---代码不规范,亲人两行泪
任何语言的程序员,编写出符合规范的代码,是开始程序生涯的第一步! 关于代码规范 Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文档 其中第 8 篇 ...
- Python代码规范(PEP8)问题及解决
转载:https://blog.csdn.net/Jason_Lewis/article/details/75386598 最近刚刚接触Python,为了养成好习惯,尽量保证自己写的代码符合PEP8代 ...
随机推荐
- request 中url拼接排序参数与签名算法
一.参数要求: { appId:应用在后台创建应用时分配的应用编号,与应用密钥一一对应 sign:按照当前请求参数名的字母序进行升序排列(排序时区分大小写,除sign外,其它值不为空的参数都参与签名) ...
- [笨方法学python]习题51自动化测试笔记
习题51 本节自动化测试部分看不大懂,自己每步都打印出来,帮助理解.(代码标红部分为自己加入调试为打印变量值所用) tests/tools.py from nose.tools import * im ...
- nginx 的信号量
参考文章:https://blog.51cto.com/5660061/2380428 nginx 中的信号量: TERM,INT 快速的结束应用程序 ,等同于 kill -9 pid QUIT 优 ...
- c++小游戏——2048
#include <stdio.h> #include <time.h> #include <conio.h> #include <windows.h> ...
- rabbitMQ_topic(五)
主题转发器 发送到主题转发器的消息不能有任意的 routing_key - 它必须是由点分隔的单词列表.这些单词可以是任何东西,但通常它们指定与消息相关联的一些功能.几个有效的routeKey示例:“ ...
- 接口测试时遇到 java 代码加密请求数据,用 python 的我该怎么办?
前言 自动化测试应用越来越多了,尤其是接口自动化测试. 在接口测试数据传递方面,很多公司都会选择对请求数据进行加密处理. 而目前为主,大部分公司的产品都是java语言实现的.所以加密处理也是java实 ...
- CodeForces 372 A. Counting Kangaroos is Fun
题意,有n只袋鼠,没每只袋鼠有个袋子,大小为si,一个袋鼠可以进入另外一个袋鼠的袋子里面,当且仅当另一个袋鼠的袋子是他的二倍或二倍一上,然后中国袋鼠就是不可见的,不能出现多个袋鼠嵌套的情况.让你求最少 ...
- 为什么for循环可以遍历list:Python中迭代器与生成器
1 引言 只要你学了Python语言,就不会不知道for循环,也肯定用for循环来遍历一个列表(list),那为什么for循环可以遍历list,而不能遍历int类型对象呢?怎么让一个自定义的对象可遍历 ...
- H3C软件开发笔试面试总结
注:我目前是陕西师范大学计算机科学学院本科生,在西安参加笔试以及面试 先是笔试,我选择的是JAVA方向,笔试选择题目主要是一些基础性的题目,然后简答题问了final.finally.finallize ...
- HTML第六章 盒子模型
什么是盒子模型: (1)边框: (2)内边距: (3)外边距: (4)元素内容·: (5)背景色·: 边框: 属性: 颜色(border-color),粗细(border-width),样式(bord ...