python 编程的 Style Guide
Python 的作者既优雅又高冷又 鬼毛的 再 PEP8 里规定了 Python 程序编写规范。(风格和格式)
一、基本观念
1、可读性之上,代码被读的次数肯定比被写的次数多。因此作者十分重视代码的可读性,后文中的很多规定都是基于这个出发点考虑的。
2、一致性次之,如果所有的代码的 style 与本指南不符,有限考虑一致性,但是新编写的模块有限遵风格指南;
二、具体操作
1、布局和格式
+ 缩进: 优先用四个空格而不是制表符(tab)
+ 多行连读语句: 对齐。几个正面的例子:
# 括号内开头对齐
foo = long_function_name(var_one, var_two,
var_three, var_four) # Hanging indent: 括号第一行不填,第二行开始括号内的部分加倍缩进(多4个空格)
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
+ 多行构赋值: 后半括号要独立一行,且和前面的行对齐,两种方式均可:
my_list = [
, , ,
, , ,
]
my_list = [
, , ,
, , ,
]
+ 行的长度少于 72 个字符:主要时为了便于分屏对比代码(作者操心命)。
换行的操作:优先用括号把并列的长语句括起来。然后就可以再连接处换行了,比如 with 或者 assert 语句,再用反斜杠。
+ 在操作符 (+、-、*、\)之前换行:方便阅读时快速理解操作符后面的内容是被如何操作的,
+ 空白行:顶层 function 和 class 前后各两行,method 前后各一行
+ 导入 import : 不同的库每个导入各占一行,相同的库里多个模块可以在一行导入,导入顺序: 标准库 -> 空白行,第三方库、本地库
+ 各种符合语句,最好各占一行,为了可读性,不要再一行内出现多个语句
2、符号
+ 引号:string 的两侧单引号双引号都可以,string 的内容里如果又但单引号,外面的就用双引号,反之亦然,尽量不适用反斜杠类 escape,影响可读性。
+ 空白符:
1、各种括号的内部不直接用空白符
YES: spam(ham[], {egg: })
No: spam( ham( ), { egg: })
2、逗号分号冒号前面不直接用空白符
Yes: if x == : print x, y; x, y = y, x
No: if x == : print x , y ; x , y = y , x
3、function 和 variable 名字和括号之间不加空白符
4、避免在行尾使用多余的空白符,影响某些符号的运行,主要是你很难发现
5、运算符两端要各加且只加一个空白符,遇到多层优先级的运算,只在最低优先级的运算符两侧加空白符:
# Yes
i = i +
submitted +=
x = x* -
hypot2 = x*x + y*y
c = (a+b) * (a-b) # No
i=i+
submitted +=
x = x * -
hypot2 = x * x + y * y
c = (a + b) * (a - b)
6、关键字参数的赋值等号不用空白符
def complex(real, imag=0.0):
return magic(r=real, i=imag)
+ 末尾逗号:tuple 和 list的最后一项是可以接逗号的
这里说明一下:如果 tuple 和 list 是分行构建的,且每一行左后可以接一个逗号,方便以后的扩展保持统一格式:如果是在同一行构建的,则没必要最后接一个逗号
3、注释
+ 注释是保证注解的内容保持更新的,不然和代码不符,还真倒不如注释
+ 注释要说人话, 用完整的语句编写,开头大写,句尾加句号
+ 注释据句尾句号后加两个空白符在换行
+ 大段注释,每一行开头 # 开头,几个空白符在写内容,段落之间的空行也用 # 开头
+ 同行注释尽量不使用,干扰阅读代码。如果某些特殊情况必须使用,和代码直接保持两个以上的空白符
+ docstring : 给所有公开的模块,函数。类写 dcostring. 私有的就不用写了,用注释时代替,
这种注释应该出现在 def 的后一行,默认用三双引号来做
docstring : 对于多行的 docstring ,结尾的三引号要独占一行
4、 命名
+ 命名的风格又很多种,Python 基本使用的是 lower_case_with_underscore
+ 使用 _single_leading_underscore::表示弱的内部使用,在 from X import * 是不会导入这一类对象
+ 使用 single_tailing_underscore_:为了略微改变那些和 Python 的 keyword 冲突的命名
+ 使用__double_leading_underscore:类的外面是无法调用这个对象
+ 首位都有双下划线的命名只限 python 内部使用,不要随意起这种名
+ 不要只用小写的 ”i“ 大写的 ”O“,容易引起误解
+ package 和 moudle 的命名用 lower_case_with_underscore
+ 类的命名使用 CapWords
+ Class 内部的命名,能使用非公开就用非公开,因为把一个 attribute 由 非公开变为公开要比反过来容易太多
5、编程过程中的风格建议
+ 和 None 做比较时永远用 is \ is not 而不是 ==
+ 用 if x in not y 而不是 if not x is y:更贴经自然语言
+ 定义函数的时候,永远用 def 而不是把一个 lambda 函数赋给一个变量名。lambda的唯一使用场景应该是一个复杂的表达里嵌入使用
+ 在使用 Exception 的时候,从 Exception 到处 为不是 BaseException
+ 在使用 try...except ... 排除 意外的时候,明确规定 except 的意外情况而不是直接使用 ‘except’:,这是确保不会把 SystemExit 算进去,那样的话 contrl-c 衲衣操作
+ 保证Return 的一致性: 一个函数里要么都不 return,要么每种情况的 return 都明确规定, 即便return None
def foo(x):
if x >= :
return math.sqrt(x)
else:
return None def bar(x):
if x < :
return None
return math.sqrt(x)
+ 永远优先使用 string 的 methods 不是直接使用 string module,比如用 .startwith(), .endwith() 来代替 slicing 作比较
+ 记住空的有序容器比如 tuple set string list 的布尔值是 False
+ 永远不要把布尔值 和 True / False 作比较,直接用它的真假来控制流程
python 编程的 Style Guide的更多相关文章
- [Advanced Python] 16 - Google style guide for programming
Ref: Python 风格指南 - 内容目录 这里主要记录一下值得注意的地方. Python语言规范 Lint:vsCode自带 导入:完整路径 异常 Ref: [Python] 07 - Stat ...
- PEP 8 – Style Guide for Python Code
原文:PEP 8 – Style Guide for Python Code PEP:8 题目:Python代码风格指南 作者:Guido van Rossum, www.yszx11.cnBarry ...
- [Guide]Google Python Style Guide
扉页 项目主页 Google Style Guide Google 开源项目风格指南 - 中文版 背景 Python 是Google主要的脚本语言.这本风格指南主要包含的是针对python的编程准则. ...
- python coding style guide 的高速落地实践
python coding style guide 的高速落地实践 机器和人各有所长,如coding style检查这样的可自己主动化的工作理应交给机器去完毕,故发此文帮助你在几分钟内实现coding ...
- python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准
python coding style guide 的快速落地实践 机器和人各有所长,如coding style检查这种可自动化的工作理应交给机器去完成,故发此文帮助你在几分钟内实现coding st ...
- 一张图总结Google C++编程规范(Google C++ Style Guide)
Google C++ Style Guide是一份不错的C++编码指南,我制作了一张比較全面的说明图,能够在短时间内高速掌握规范的重点内容.只是规范毕竟是人定的,记得活学活用.看图前别忘了阅读以下三条 ...
- 《自拍教程9》Python编程风格规范
Python编程风格规范 根据Python官方提供的Python编程风格规范: Style Guide for Python Code, 即PEP8规范, https://www.python.org ...
- [Guide]Google C++ Style Guide
0.0 扉页 项目主页 Google Style Guide Google 开源项目风格指南 -中文版 0.1 译者前言 Google 经常会发布一些开源项目, 意味着会接受来自其他代码贡献者的代码. ...
- Google C++ Style Guide
Background C++ is one of the main development languages used by many of Google's open-source project ...
随机推荐
- spring(二):体系结构&核心模块
Spring框架 帮助管理对象及其依赖关系 提供如通用日志记录.性能统计.安全控制.异常处理等面向切面的能力 帮助管理数据库事务,提供了一套简单的JDBC访问实现,提供与第三方数据访问框架集成(如Hi ...
- vue引用fastClick后,ios输入框聚焦不灵敏问题
fastClick.prototype.focus = function (targetElement) { targetElement.focus() }
- MVC HTML辅助方法
HTML辅助方法(HTML Helper)用来辅助产生HTML,在开发View的时候会面对许多HTML标签,处理这些HTML标签非常繁琐,为了降低View的复杂度,可以使用HTML辅助方法帮助你产生一 ...
- AcWing 845. 八数码
https://www.acwing.com/problem/content/847/ #include<bits/stdc++.h> using namespace std; int b ...
- java程序员摸爬滚打的三年,这些经历你值得借鉴
不知不觉都2020年2月底了,小羊同学从毕业快开始都一直从事java开发这个行业,前两天开通了头条号,想借此发文分享一下这几年的经历吧,如果你是还没毕业的大学生或者刚入行不久,也许会对你有帮助. 1: ...
- Linux - Shell - cut: 低配 awk
概述 简述 shell 命令行工具 cut 背景 偶尔需要用 awk 来筛选特定的列 awk 很是强大 但是强大的背后, 却伴随着复杂 其实同样的功能, awk 也没有复杂多少 如果是 简单的任务, ...
- 一起了解 .Net Foundation 项目 No.4
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. BenchmarkDotN ...
- [Excel] 一些实用的函数式子
这次是用php写了一个系统 收集信息,需要身份证号作为验证,但是为了信息安全 只能在数据库里面放身份证后六位.也就是说.最终导出的Excel也是只有身份证的后六位.,, 后来我发现我本地保存的完整身份 ...
- Refusing to install package with name "webpack" under a package
最近学习webpack 知识时 下载依赖结果报了这个错 查阅资料后发现是 这个name 不能使用所需要安装包的名字! 换为其他之后 再次操作命令 就没问题了
- 设备驱动基础学习--misc device简单实现
在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述).miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同. 所有的miscde ...