在日常工作中,编写python代码时,大家有可能因为IDE的不同或者是没有遵循python的pep8规范而导致每个人的格式都不尽相同,导致其他人阅读起来比较吃力。但是有时候代码规范也并不是建议使用的,最主要的是风格一致性,每个组内的代码风格统一起来才是最重要的,根据自己的判断选择是否遵循PEP8。

  • PEP8 规范链接: 官方链接、中文翻译

ps: 许多项目有自己的编码规范,在出现规范冲突时,项目自身的规范优先。

接下来我们只挑一些在工作中频繁遇到规范进行示例,为减少大家阅读时间,以 推荐糟糕 来说明。

一. 命名规范

命名规范很重要,很多时候你的命名能够大致的解释了变量、函数、类是用来做什么的。所以在命名的时候一定要选择贴近的词义,让阅读者可以理解

1.1 包名和模块名

模块应该用简短全小写的名字,如果为了提升可读性,下划线也是可以用的。Python包名也应该使用简短全小写的名字,但不建议用下划线。

1.2 类名

类名一般使用单词首字母大写的约定

推荐:

class CheckFunc:...

糟糕:

# 首字符需大写,同时类名中无需带下划线
class check_func:...# 全部大写,同时类名中无需带下划线
class CHECK_FUNC:...

1.3 函数名

函数名应该小写,如果想提高可读性可以用下划线分隔。

推荐:

def check_func():...

1.4 变量名

一定要靠近变量的意思,不要使用一些意义不明的参数,如:i,j,k,特别注意永远不要使用字母‘l’(小写的L),‘O’(大写的O),或者‘I’(大写的I)作为单字符变量名。

糟糕:

l = []i = 0xxx = [for i in xx]

1.5 常量

常量一般默认全部为大写, 同时一定要表明好注释

推荐:

TOTAL = 10  # 订单总页数# 最大溢出量
MAX_OVERFLOW = 1000

1.6 异常名

因为异常一般都是类,所有类的命名方法在这里也适用。

推荐:

class ErrorInvalidArgument(ApiError):"""参数缺失或错误"""code = 401001code_name = 'Invalid_Argument'message = 'invalid argument.'zh_message = '参数缺失或错误'

二. 表达式和语句中的空格

2.1 二元运算符中的空格:

推荐:

i = i + 1submitted += 1x = x*2 - 1hypot2 = x*x + y*yc = (a+b) * (a-b)

糟糕:

i=i+1submitted +=1x = x * 2 - 1hypot2 = x * x + y * yc = (a + b) * (a - b)

2.2 关键字参数或者默认参数值:

推荐:

def complex(real, imag=0.0):return magic(r=real, i=imag)

糟糕:

def complex(real, imag = 0.0):return magic(r = real, i = imag)

三. 注释

当更新代码时,一定要记得同步更新注释,否则使阅读的人会陷入更糟糕的近况。

3.1 文档字符串

推荐:

"""Return a foobangOptional plotz says to frobnicate the bizbaz first.
"""

3.2 函数或方法注释

大家在写函数或者方法时,往往会漏掉当前方法或函数的作用,其实这个还是很重要的,这样往往不需要阅读你的逻辑就可以知道你准备干什么

推荐:

"""
def oa_notice_template(project, api, account, cpu, mem):"""压测申请模板:param project: 项目名称:param api: 接口名称:param account: 申请人:param cpu: cpu核数:param mem: 内存大小:return:"""
"""

3.3 其他建议

在编写代码时,阅读者追寻编写人时往往很困难,或者此文件具体是做什么的。这个时候我们稍微添加一些个人信息注释就很好做到追源了。

推荐:

"""
@Description: 接口测试上传
@Author  : xxx
@Time    : 2021/5/9 11:51 下午
@Site    :
@File    : http_test_xpa.py
"""import os
...

四. 代码布局

4.1 缩进

每一级缩进使用4个空格。

推荐:

# 与左括号对齐
foo = long_function_name(var_one, var_two,var_three, var_four)# 用更多的缩进来与其他行区分
def long_function_name(var_one, var_two, var_three,var_four):print(var_one)# 挂行缩进应该再换一行
foo = long_function_name(var_one, var_two,var_three, var_four)# 与内容对齐
my_list = [1, 2, 3,4, 5, 6,]# 与第一行第一个字符对齐
my_list = [1, 2, 3,4, 5, 6,
]

糟糕:

# 没有使用垂直对齐时,禁止把参数放在第一行
foo = long_function_name(var_one, var_two,var_three, var_four)# 当缩进没有与其他行区分时,要增加缩进
def long_function_name(var_one, var_two, var_three,var_four):print(var_one)my_list = [1, 2, 3, 4, 5, 6]

4.2 行的最大长度

所有行限制的最大字符数为79。

4.3 空行

推荐:

# 类与类之间前后用两个空行隔开
Class A:...Class B:...# 类中函数与函数之间前后用一个空行隔开
Class C:def c_a(self):...def c_b(self):...# 函数与函数之间前后用两个空行隔开
def a_run():...def b_run():...# 在函数中使用空行来区分逻辑段(谨慎使用)。
def c_run():# 逻辑A......# 逻辑B......

4.4 导入

推荐:

  • 导入应该按照以下顺序分组:

    • 标准库导入
    • 相关第三方库导入
    • 本地应用/库特定导入

同时在每一组导入之间加入空行。

# 官方标准库导入
import os
import sys# 第三方库
import arrow
import requests# 导入本地库
import app# 以from导入标准库
from datetime import datetime# 以from导入第三方库
from ldap3 import Server# 以from导入本地库
from app import DB
from . import create_app  # 处理绝对路径过长时可以以相对路径进行替换

糟糕:

# 在import中导入多个库
import sys, os

五. python编程建议

5.1 关于异常处理:

推荐:

try:value = collection[key]
except KeyError:return key_not_found(key)
else:return handle_value(value)

糟糕:

try:return handle_value(collection[key])
except KeyError:return key_not_found(key)

5.2 关于返回结果处理:

不管在任何时候返回结果都需要保持一致。

推荐:

def foo(x):if x >= 0:return math.sqrt(x)else:return Nonedef bar(x):if x < 0:return Nonereturn math.sqrt(x)

糟糕:

def foo(x):if x >= 0:return math.sqrt(x)def bar(x):if x < 0:returnreturn math.sqrt(x)

5.3 关于True、Fakse的判断:

不要用 == 去和True或者False比较

推荐:

if greeting:
...

糟糕:

if greeting == True:
...if greeting is True:
...

python3代码编程规范(命名、空格、注释、代码布局、编程建议等)相关推荐

  1. C语言初学者编程规范—命名规则

    原文地址:C语言初学者编程规范-命名规则 C是一门朴素的语言,你使用的命名也应该这样.与Modula-2和Pascal程序员不同,C程序员不使用诸如"ThisVariableIsATempo ...

  2. 华为C语言编程规范重点笔记(学习C编程规范看这篇就够了)

    华为C编程规范原文详情:link. 一.代码总体原则 1.清晰第一 **清晰性是易于维护.易于重构的程序必需具备的特征.**"程序必须为阅读它的人而编写,只是顺便用于机器执行".& ...

  3. 以下python注释代码中_以下Python注释代码,不正确的是()_学小易找答案

    [单选题]数字0-9是十进制的数码,全部数码的个数称为( ). [单选题]企业将款项汇往异地银行开设采购专户,根据收到的银行汇款凭证回单联,应借记的会计科目是( ).(2018年) [多选题]在201 ...

  4. 以下python注释代码中_以下 Python注释代码不正确的是()

    以下 Python注释代码不正确的是() 答:// Python注释代码 According to Truman Doctrine, the US aimed to establish its heg ...

  5. 【阿里巴巴Java编程规范学习 一】Java基本编程规约(上)

    编程规约是比较重要的部分,按照基础和高级,我分成了两篇来学习,上篇涉及到命名风格.常量定义.代码格式和OOP规约都是面向对象基础部分和一些通识命名规范.红色加粗字体为自己可能会犯的错误以及不规范的地方 ...

  6. python代码编写规范有哪些_Python代码编写规范(适合于小团体,低强度)

    正文之前 这篇文是我跟师兄协定以后写代码的一些规范,虽然麻烦,但是对于后续的复查以及代码延续都有很大的好处的. 武汉欢乐谷自己拍的图,后期也调了下.哈哈哈~ 正文 必须统一的: 文件头 写入作者姓名, ...

  7. Java开发项目的命名规范+命名方法+注释规范

    一.命名规范 变量Variable 变量名通常以小写字母 a-z 开头.如果变量名由多个单词构成,从第二个单词开始首字母需要大写 A-Z (小驼峰命名法).变量名中不建议使用下划线 _ 作为前缀或者单 ...

  8. java 注释 代码,如何在Java中注释代码块

    Is it possible to annotate a block of code? E.g. for cycle or simply curly brackets? If so, how? Fir ...

  9. #python注释代码对吗,以下Python注释代码不正确的是()。A.()#()Python注释代码()B.()#Python...

    点A(10,8,25),则点A的X坐标为(). HIV的结构中不包括() "加工承揽"的行为属于() LCYC95坯料切削循环中R112表示() SRMD的临床特点是() 茶艺表演 ...

  10. java 代码书写规范_代码书写规范和命名规范

    上一篇给大家分享了一下,关于文档编写的几个概念.这篇文章阐述如果编写代码书写规范以及命名规范文档.[以java语言为例] 1.代码书写规范 代码书写规范,能够让不同的人,写出相同风格的代码.很多人都看 ...

最新文章

  1. c 连接oracle的参数,[20210203]19c登录连接改变一些参数.txt
  2. linux gcc 显示/禁用 所有警告
  3. Boost:align overflow对齐溢出的测试程序
  4. prefixspan java_PrefixSpan序列模式挖掘算法
  5. Leetcode 2 两数相加 Python
  6. ASP.net Core MVC项目给js文件添加版本号
  7. P4111 [HEOI2015]小Z的房间
  8. 百度打造AIR智能道路系统,可降低90%交通事故
  9. Mysql的my.cnf配置文件详情
  10. linux c 运行脚本,linux 将c源代码当作shell一样脚本运行_沃航科技
  11. 数据结构 5-3-3 二叉树的线索化
  12. .NET 开源的免费午餐结束了?
  13. Makefile变量
  14. 《逐梦旅程——windows游戏编程之从零开始》笔记
  15. 校园网一直是连接认证服务器无响应,校园网常见问题解决办法
  16. “什么?中东的土豪给我们 App 充了大钱!”
  17. property java_java-必须为元素类型“ property”声明属性“...
  18. 《敏捷软件开发》— 敏捷开发 — 敏捷实践
  19. 【AD】如何画双层PCB板,双层PCB板布线规则
  20. win10远程桌面连接凭据怎么设置_win10系统设置让远程桌面连接记住密码下次登录不需再输入的步骤...

热门文章

  1. 讲人话科普,Python是个啥?为啥大家都在学?
  2. Android传感器(三):方向传感器
  3. Maya如何渲染序列帧
  4. 从零开始安装搭建win10与ubuntu20.04双系统开发环境——集安装、配置、软件、美化、常见问题等于一体的——超详细教程
  5. 传奇人物赫伯特·西蒙的原则
  6. Android SQLite加密
  7. Android 友盟统计集成
  8. 微信屏蔽网页的依据是什么?
  9. Rime输入法小狼毫皮肤配色
  10. C语言:围圈报数游戏