优雅的代码--PEP8规范

简介: 优雅的代码--PEP8规范

每日分享

Progress is impossible without change, and those who cannot change their minds cannot change anything.

没有改变就不可能取得进步,那些不愿改变想法的人无法改变任何事。

小闫语录

想要改变,首先是改变想法,否则只能重蹈覆辙。


PEP8规范

当入职一家公司,看到了一份乱糟糟的源码,你是不是心里奔腾着无数的草泥马?当你离职,留给后人的代码又如何呢?与人方便与己方便,规范代码,从我做起。为了让我们的代码提高可读性,便于后期维护,官方提供了一种规范,这就是PEP8。那么具体的内容是什么呢?下面一起来看看吧。

1.缩进

1.对于每一级缩进,采用四个空格(有的公司使用3个空格,视情况而定,但是官方推荐为4个)。如下:

  1. def func():
  2.    print("I'm EthanYan")

print前面有4个空格。

也许你因为使用一些工具,习惯了Tab键。但是有一点你要明白,有些地方tab键不是4个空格,而且python3中不允许混合使用空格和Tab键缩进。

2.括号里面包裹的参数过多时,可以通过换行缩进来表示,如下:

demo = func_name(var_one,
                 var_two,
                 var_three)

当然,下面的示例也是符合规范的:

my_list = [
    1,2,3,
    4,5,6
]

2.行最大长度

为了查看代码时,不需要来回的拉取滚动条,影响体验,所有行限制的最大字符数为79。对于文档字符串或者注释则应控制在72个字符内。

对于较长的代码优先使用的续行方式并不是通过反斜杠,而是通过小括号,中括号以及大括号中的隐式续行方式实现。

3.二元运算符

在使用一些二元运算符时,如果变量名超长,需要换行,怎么办?答案是在运算符之前换行。

# 推荐:运算符和操作数很容易进行匹配
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)

但是为了便于查看,尽量写在一行。

4.空行

1.顶层函数和类定义时,前后用两个空行隔开。

2.类里面的方法定义用一个空行隔开。

3.对于函数中不同的逻辑块可以用空行隔开。

5.源代码

1.Python核心发布版本中的代码总是以UTF-8格式编码(或者在Python2中用ASCII编码)。

2.使用ASCII(在Python2中)或UTF-8(在Python3中)编码的文件不应具有编码声明。

3.在标准库中,如果需要使用非默认的编码,应该将他们放在注释或者文档字符串中。比如作者的姓名。

6.导入

1.我们在导入模块的时候,最好是放在顶部,而且还应该遵循一定的规律:先导入标准库,再导入相关第三方库,最后导入本地模块应用之类的。每一组导入之间,加上空行就最好不过了。

2.当然有时为了避免出现循环导入的问题,我们需要在特殊的地方导入,这也无可厚非。

3.导包的时候还要注意使用绝对路径导入,增加可读性,提高代码性能。但是凡事有例外,比如你的绝对路径那么长,好吧,我比划了一下,你没有看见,不怪我。这时你可以采用相对路径:

  1. from.import ethanyan

4.避免使用通配符的导入,这样会增加命名空间中名字的重复率。如下的方式,不推荐使用:

  1. from ethanyan import*

7.引号

单引号和双引号是相同的,根据你自己的喜好使用。但是为了避免出错,尽量使用单双引号包裹的形式;而不是单引号里面继续使用单引号,再用反斜杠进行转义。

8.表达式中的空格问题

1.对于小括号、中括号和大括号的使用,表达式紧跟括号,不要添加空格。

  1. yes: func(1,2)
  2. no : func(1,2)

2.逗号、封号、冒号等紧跟前面字符:

  1. yes: x, y, z
  2. no : x , y , z

3.冒号再切片中,就像二元运算符一样,两边应该用相同数量的空格:

  1. example[1:9]

9.注释

有一句话是这样说的:与代码相矛盾的注释比没有注释还糟糕。所以请不要乱添加注释,而且在修改完代码之后,请更新你的注释,不要给后人留下一个烂摊子。

紧跟代码的注释,应有至少两个空格的分割,如下:

  1. x = x +1   # 这是测试数据

10.命名规范

1.命名与python中标识符的命名规则一样,由字母数字下划线组成,且数字不能开头。

2.当然还有一些特殊的规则,比如大驼峰和小驼峰命名形式。

3.如果以单下划线开头命名,那么在 frommimport*的时候是不会导入的。

4.有时候你会看到一些以单下划线结尾的名字,不要奇怪。这是为了和python内部关键词不冲突的一种约定。

5.命名的时候不要使用魔方方法的形式如 __ni__

6.避免混淆,不要使用有歧义的字符。如 l(小写的L)和 1多像,还有 O(英文字母)和 0(数字)多像,对吧?你也不想认错。

7.类名首字母请大写。

8.异常命名的时候最后以 Error结尾,让人一下子辨别出来。

9.命名要做到见名知义。

10.函数名要小写。

11.一些常量名要全部使用大写。比如在项目中的一些常量放在一个单独的文件中,他们的名字应该如下:MAX_OVERFLOW

11.其他的建议

1.避免在尾部添加空格。因为尾部的空格通常都看不见,会产生混乱。比如,一个反斜杠后面跟一个空格的换行符,不算续行标记。有些编辑器不会保留尾空格,并且很多项目(像 CPython)在pre-commit钩子调用中会过滤掉尾空格。

2.前面也有所提到,就是在二元运算符两边都加一个空格。那么有哪些符号呢?

  1. 赋值:=、+=、-=
  2. 比较:==、<、>、!=、<>、<=、>=innotinisisnot
  3. 布尔:andornot

3.在使用运算符的时候,有一个优先级的问题,我们需要在较低优先级的运算符两边添加空格(别指望提示,需要你自己判断)。空格最好是用一个,而且前后数量相等。如下:

  1. x = x*2- 1

4.指定关键字参数或者默认参数值的时候,不要在 =附近添加空格。

当然,规范中还有很多很多条目,这里只列出那些常用的、需要指出的部分。公司一般有自己的规范,严格按照文档进行编码即可。当然一些创业公司可能没有,建议你使用本规范,养成良好的编码习惯,工作中,看着也开心。最后祝愿大家代码无bug。

相关文章
|
6月前
|
前端开发 JavaScript
工作中代码书写规范
前端代码规范增进代码整洁与团队协作,降低维护成本。包括代码规范、风格和注释建议:选择编程语言对应的编码规范,统一命名、缩进和换行规则;注重代码风格的一致性、简洁性和可配置性;注释要简洁明了,位于关键位置。通过制定规范文档、使用代码检查工具、定期代码审查和鼓励改进来执行规范,提升团队效率和代码质量。
66 0
|
2天前
|
算法 IDE API
Python编码规范与代码可读性提升策略####
本文探讨了Python编码规范的重要性,并深入分析了如何通过遵循PEP 8等标准来提高代码的可读性和可维护性。文章首先概述了Python编码规范的基本要求,包括命名约定、缩进风格、注释使用等,接着详细阐述了这些规范如何影响代码的理解和维护。此外,文章还提供了一些实用的技巧和建议,帮助开发者在日常开发中更好地应用这些规范,从而编写出更加清晰、简洁且易于理解的Python代码。 ####
|
6月前
|
Python
【Python操作基础】——语句书写规范
【Python操作基础】——语句书写规范
|
6月前
|
Python
在Python Web开发过程中:PEP 8编码规范中的一些关键规则是什么?
**PEP 8是Python代码风格指南,关键规则包括:使用4空格缩进,行最大长度79字符,函数间留2空行,每导入独占一行,运算符两侧各空一格,小写下划线命名函数,注释清晰简洁,统一引号风格,括号内不加空格,多行列表/参数末尾即使单元素也加逗号,提升代码一致性与可维护性。**
30 3
|
6月前
|
开发者 Python
Python 的编码规范和最佳实践: 什么是 PEP 8?为什么要遵循 PEP 8 编码规范?
**PEP 8是Python的代码风格指南,促进代码一致性与可读性。它规定4个空格缩进,每行不超过79字符,变量名用下划线分隔小写,类名驼峰式大写。遵循PEP 8提升代码易读性,增强团队协作效率,支持社区代码质量。**
83 0
|
6月前
|
算法 Unix 程序员
【C/C++ 基本知识 注释规范】C/C++中注释方式以及规范
【C/C++ 基本知识 注释规范】C/C++中注释方式以及规范
81 0
|
6月前
|
存储 安全 Java
java标识符命名规范--代码格式规范--注释规范--最佳实践和禁忌--代码示例
java标识符命名规范--代码格式规范--注释规范--最佳实践和禁忌--代码示例
195 0
|
前端开发 JavaScript
|
程序员
代码的规范
代码的规范
157 0
|
Python
Python:flake8 是 pep8检查代码风格
Python:flake8 是 pep8检查代码风格
204 0