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的更多相关文章

  1. [Advanced Python] 16 - Google style guide for programming

    Ref: Python 风格指南 - 内容目录 这里主要记录一下值得注意的地方. Python语言规范 Lint:vsCode自带 导入:完整路径 异常 Ref: [Python] 07 - Stat ...

  2. PEP 8 – Style Guide for Python Code

    原文:PEP 8 – Style Guide for Python Code PEP:8 题目:Python代码风格指南 作者:Guido van Rossum, www.yszx11.cnBarry ...

  3. [Guide]Google Python Style Guide

    扉页 项目主页 Google Style Guide Google 开源项目风格指南 - 中文版 背景 Python 是Google主要的脚本语言.这本风格指南主要包含的是针对python的编程准则. ...

  4. python coding style guide 的高速落地实践

    python coding style guide 的高速落地实践 机器和人各有所长,如coding style检查这样的可自己主动化的工作理应交给机器去完毕,故发此文帮助你在几分钟内实现coding ...

  5. python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准

    python coding style guide 的快速落地实践 机器和人各有所长,如coding style检查这种可自动化的工作理应交给机器去完成,故发此文帮助你在几分钟内实现coding st ...

  6. 一张图总结Google C++编程规范(Google C++ Style Guide)

    Google C++ Style Guide是一份不错的C++编码指南,我制作了一张比較全面的说明图,能够在短时间内高速掌握规范的重点内容.只是规范毕竟是人定的,记得活学活用.看图前别忘了阅读以下三条 ...

  7. 《自拍教程9》Python编程风格规范

    Python编程风格规范 根据Python官方提供的Python编程风格规范: Style Guide for Python Code, 即PEP8规范, https://www.python.org ...

  8. [Guide]Google C++ Style Guide

    0.0 扉页 项目主页 Google Style Guide Google 开源项目风格指南 -中文版 0.1 译者前言 Google 经常会发布一些开源项目, 意味着会接受来自其他代码贡献者的代码. ...

  9. Google C++ Style Guide

    Background C++ is one of the main development languages used by many of Google's open-source project ...

随机推荐

  1. spring(二):体系结构&核心模块

    Spring框架 帮助管理对象及其依赖关系 提供如通用日志记录.性能统计.安全控制.异常处理等面向切面的能力 帮助管理数据库事务,提供了一套简单的JDBC访问实现,提供与第三方数据访问框架集成(如Hi ...

  2. vue引用fastClick后,ios输入框聚焦不灵敏问题

    fastClick.prototype.focus = function (targetElement) {       targetElement.focus() }

  3. MVC HTML辅助方法

    HTML辅助方法(HTML Helper)用来辅助产生HTML,在开发View的时候会面对许多HTML标签,处理这些HTML标签非常繁琐,为了降低View的复杂度,可以使用HTML辅助方法帮助你产生一 ...

  4. AcWing 845. 八数码

    https://www.acwing.com/problem/content/847/ #include<bits/stdc++.h> using namespace std; int b ...

  5. java程序员摸爬滚打的三年,这些经历你值得借鉴

    不知不觉都2020年2月底了,小羊同学从毕业快开始都一直从事java开发这个行业,前两天开通了头条号,想借此发文分享一下这几年的经历吧,如果你是还没毕业的大学生或者刚入行不久,也许会对你有帮助. 1: ...

  6. Linux - Shell - cut: 低配 awk

    概述 简述 shell 命令行工具 cut 背景 偶尔需要用 awk 来筛选特定的列 awk 很是强大 但是强大的背后, 却伴随着复杂 其实同样的功能, awk 也没有复杂多少 如果是 简单的任务, ...

  7. 一起了解 .Net Foundation 项目 No.4

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. BenchmarkDotN ...

  8. [Excel] 一些实用的函数式子

    这次是用php写了一个系统 收集信息,需要身份证号作为验证,但是为了信息安全 只能在数据库里面放身份证后六位.也就是说.最终导出的Excel也是只有身份证的后六位.,, 后来我发现我本地保存的完整身份 ...

  9. Refusing to install package with name "webpack" under a package

    最近学习webpack 知识时 下载依赖结果报了这个错 查阅资料后发现是 这个name 不能使用所需要安装包的名字! 换为其他之后 再次操作命令 就没问题了

  10. 设备驱动基础学习--misc device简单实现

    在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述).miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同. 所有的miscde ...