Python 开发编码规范

简介: 最近,团队又来了几个小伙伴,经过一段时间磨合之后,发现彼此之间还是比较默契的,但有一个很大的问题是,每个人的编程风格和习惯都不同,导致现在代码看起来非常混乱。所以,有一个统一的开发编码规范还是很重要的。我在网上搜索了一些资料,在 PEP8 的基础上,同时结合目前代码的特点,总结出下文,分享给大家。

最近,团队又来了几个小伙伴,经过一段时间磨合之后,发现彼此之间还是比较默契的,但有一个很大的问题是,每个人的编程风格和习惯都不同,导致现在代码看起来非常混乱。

所以,有一个统一的开发编码规范还是很重要的。我在网上搜索了一些资料,在 PEP8 的基础上,同时结合目前代码的特点,总结出下文,分享给大家。


代码布局


缩进


每个缩进级别采用 4 个空格,注意不是 Tab。

当一行超出单行最大长度时,采用 Python 隐式续行,即垂直对齐于圆括号、方括号和花括号。


例如:


# 调用函数
foo = long_function_name(var_one, var_two,
                         var_three, var_four)
# 定义列表
my_list = [
    1, 2, 3,
    4, 5, 6,
]
# 定义字典
my_dict = {
    'a': 'hello',
    'b': 'world'
}
复制代码


每行最大长度


传统来说一直都是 80,但我觉得以现在的浏览器屏宽来说,设置 120 都没问题,我设置的是 120.


二元运算符前换行


例如:


# 更容易匹配运算符与操作数
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends)
          - ira_deduction
          - student_loan_interest)
复制代码


空行


  • 使用 1 个空行来分隔类中的方法(method)定义。
  • 使用 2 个空行来分隔最外层的函数(function)和类(class)定义。


模块引用


Imports 应该写在代码文件的开头,并按照下面这样的顺序引用:

  1. 标准库 imports
  2. 相关第三方 imports
  3. 本地应用/库的特定 imports

禁止使用 import * 这样的方式。


模块级的双下划线命名


模块中的「双下滑线」变量,比如 __all____author____version__ 等,直接写在文件开头。


例如:


"""
This is the example module.
This module does stuff.
"""
from __future__ import barry_as_FLUFL
__all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles'
import os
import sys
复制代码


字符串引用


使用单引号来表示字符串,对于三引号字符串,使用双引号字符表示。

例如:


# 单引号字符串
a = 'hello'
# 三引号字符串
"""
这是一个三引号字符串
"""
复制代码


表达式和语句中的空格


在下列情形中避免使用过多的空白:


1、方括号,圆括号和花括号之后:


# 正确的例子:
spam(ham[1], {eggs: 2})
# 错误的例子:
spam( ham[ 1 ], { eggs: 2 } )
复制代码


2、逗号,分号或冒号之前:


# 正确的例子:
if x == 4: print x, y; x, y = y, x
# 错误的例子:
if x == 4 : print x , y ; x , y = y , x
复制代码


3、切片操作


# 正确的例子:
ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
ham[lower:upper], ham[lower:upper:], ham[lower::step]
ham[lower+offset : upper+offset]
ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
ham[lower + offset : upper + offset]
# 错误的例子:
ham[lower + offset:upper + offset]
ham[1: 9], ham[1 :9], ham[1:9 :3]
ham[lower : : upper]
ham[ : upper]
复制代码


4、赋值


# 正确的例子:
x = 1
y = 2
long_variable = 3
# 错误的例子:
x             = 1
y             = 2
long_variable = 3
复制代码


还有一点需要注意的是,一定要把行尾的空格删掉。


注释


对代码进行必要的注释,如果修改代码,还要修改对应的注释内容。

删除无用的注释内容,增加代码可读性。


块注释


要使用块注释,禁止使用行内注释,注释时,# 和后面的注释内容要有空格。

例如:


# 这是一个注释
x = 1 + 1
复制代码


不要使用下面的注释方式:


x = 1 + 1   # 这是一个注释
复制代码


TODO 注释


主要包含以下三点内容:

  1. 开头包含「TODO」字符串
  2. 紧跟着是用括号括起来的你的名字或者 email
  3. 再接下来是冒号,然后写接下来要做内容的文字解释


例如:


# TODO(xiaoming): 明确需求之后再开发
复制代码


档字符串


对于公共模块,函数,类和方法,使用文档字符串。内容包括三个方面,分别是功能描述、参数、返回值。

例如:


class MyClass:
    """
    这是一个自定义类
    """
    something
def func():
    """
    这是一个自定义函数
    params:
        params1: 第一个参数
        params2: 第二个参数
    return:
        {'data': {}, 'status': 200}
    """
    something    
复制代码


命名


1、文件名

采用小写字母和下划线的方式。

例如:


utils.py
mail_lib.py
复制代码


2、函数名

采用小写字母和下划线的方式。

例如:


def func():
    pass
def send_mail():
    pass
复制代码


3、类名

采用大驼峰方式。

例如:


class MyClass:
    pass
复制代码


4、常量和变量:

例如:


# 常量
TOTAL
MAX_COUNT
# 变量
total
max_total


目录
相关文章
|
9月前
|
存储 监控 算法
淘宝买家秀 API开发实录Python(2025)
本文讲述了作者在电商开发领域,尤其是对接淘宝买家秀 API 接口过程中所经历的挑战与收获。从申请接入、签名验证、频率限制到数据处理和实时监控,作者分享了多个实战经验与代码示例,帮助开发者更高效地获取和处理买家秀数据,提升开发效率。
|
12月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
1255 20
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的商城管理系统源码+运行步骤
基于Python+Vue开发的商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
505 7
|
8月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
900 7
|
10月前
|
数据采集 存储 数据库
Python爬虫开发:Cookie池与定期清除的代码实现
Python爬虫开发:Cookie池与定期清除的代码实现
|
9月前
|
算法 程序员 API
电商程序猿开发实录:淘宝商品python(2)
本文分享了开发者在对接淘宝商品详情API过程中的真实经历,涵盖权限申请、签名验证、限流控制、数据解析及消息订阅等关键环节,提供了实用的Python代码示例,帮助开发者高效调用API,提升系统稳定性与数据处理能力。
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
386 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
11月前
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
1255 1
|
11月前
|
存储 算法 数据可视化
用Python开发猜数字游戏:从零开始的手把手教程
猜数字游戏是编程入门经典项目,涵盖变量、循环、条件判断等核心概念。玩家通过输入猜测电脑生成的随机数,程序给出提示直至猜中。项目从基础实现到功能扩展,逐步提升难度,适合各阶段Python学习者。
846 0
|
11月前
|
数据采集 存储 监控
抖音直播间采集提取工具,直播间匿名截流获客软件,Python开发【仅供学习】
这是一套基于Python开发的抖音直播间数据采集与分析系统,包含观众信息获取、弹幕监控及数据存储等功能。代码采用requests、websockets和sqlite3等...

推荐镜像

更多