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

简介: 该文章详细介绍了Python3的编程规范,包括命名、空格使用、注释、代码布局等方面的最佳实践,帮助提升代码的可读性和一致性。

在日常工作中,编写python代码时,大家有可能因为IDE的不同或者是没有遵循python的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 = 0

xxx = [for i in xx]
1.5 常量

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

推荐:

TOTAL = 10  # 订单总页数

# 最大溢出量
MAX_OVERFLOW = 1000
1.6 异常名

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

推荐:

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

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

2.1 二元运算符中的空格:

推荐:

i = i + 1

submitted += 1

x = x*2 - 1

hypot2 = x*x + y*y

c = (a+b) * (a-b)

糟糕:

i=i+1

submitted +=1

x = x * 2 - 1

hypot2 = x * x + y * y

c = (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 foobang

Optional 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 None

def bar(x):
    if x < 0:
        return None
    return math.sqrt(x)

糟糕:

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

def bar(x):
    if x < 0:
        return
    return math.sqrt(x)
5.3 关于True、Fakse的判断:

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

推荐:

if greeting:
...

糟糕:

if greeting == True:
...

if greeting is True:
...

相关文章
|
1天前
|
机器学习/深度学习 数据采集 数据挖掘
探索Python编程的奥秘
【10月更文挑战第7天】本文将带你走进Python的世界,探索其背后的逻辑与魅力。我们将从基础语法开始,逐步深入到函数、面向对象编程等高级特性,最后通过实际项目案例,让你体验Python的强大与便捷。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启发。
|
2天前
|
IDE 开发工具 Python
Python 编程入门:打造你的第一个程序
【10月更文挑战第6天】编程,这个听起来高大上又充满神秘感的领域,其实就像学习骑自行车一样。一开始你可能会觉得难以掌握平衡,但一旦你学会了,就能自由地穿梭在广阔的道路上。本文将带你走进 Python 的世界,用最简单的方式让你体验编写代码的乐趣。不需要复杂的理论,我们将通过一个简单的例子——制作一个猜数字游戏,来实践学习。准备好了吗?让我们开始吧!
|
1天前
|
开发者 Python
探索Python中的列表推导式:简化代码的利器
在Python编程中,列表推导式是一种简洁而强大的工具,它允许开发者以一行代码实现复杂的列表操作。本文将深入探讨列表推导式的语法、优势以及实际应用,帮助读者更好地利用这一特性来优化代码。
WK
|
1天前
|
Python
Python类命名
在Python编程中,类命名至关重要,影响代码的可读性和维护性。建议使用大写驼峰命名法(如Employee),确保名称简洁且具描述性,避免使用内置类型名及单字母或数字开头,遵循PEP 8风格指南,保持项目内命名风格一致。
WK
4 0
WK
|
1天前
|
Python
Python变量命名
在Python编程中,变量命名对代码的可读性和维护性至关重要。遵循PEP 8风格指南,变量名应使用小写字母和下划线分隔单词,保持简洁明了、描述性强,避免使用单字母、Python关键字和内置函数名,采用有意义的缩写,使用英文命名,保持命名风格一致,避免魔法数字,考虑上下文。正确示例:`user_name`、`order_quantity`;不正确示例:`n`、`q`。
WK
4 0
WK
|
1天前
|
Python
Python函数命名
在Python中,函数命名应清晰、简洁且易于理解。遵循PEP 8风格指南,使用小写字母和下划线分隔单词,避免单字母命名和保留字。函数名应描述功能,以动词开头,避免泛化名称,使用有意义的缩写,保持命名风格一致,避免魔法数字。示例包括 `calculate_area_of_circle`、`fetch_data_from_api` 和 `save_file_to_disk`。这些实践有助于创建易读、易维护的代码。
WK
4 0
|
1天前
|
设计模式 缓存 Python
Python编程中的装饰器:从基础到高级应用
【10月更文挑战第7天】 本文深入探讨了Python中装饰器的使用,从基本概念到高级应用全面解析。通过具体示例,读者将能清晰理解装饰器的本质、实现方式及其在代码优化和功能增强中的重要作用。
6 0
|
1天前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
6 0
|
2天前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
9 0
|
2天前
|
计算机视觉 Python
Python中Pillow库的常见用法和代码示例
Pillow是Python中广泛使用的图像处理库,支持丰富的图像操作功能,包括但不限于打开、保存、缩放、裁剪、旋转、调色等。本文通过一系列示例介绍Pillow的基本用法,涵盖图像的加载与显示、尺寸调整、裁剪与旋转、亮度调整、格式转换、滤镜应用、图像合成及像素级操作等。首先需通过`pip install pillow`安装库,随后可通过导入`PIL.Image`等模块开始图像处理任务。无论是初学者还是进阶用户,都能从Pillow提供的强大功能中获益。
6 0