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


目录
相关文章
|
19天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的大学竞赛报名管理系统
基于Python+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
33 3
基于Python+Vue开发的大学竞赛报名管理系统
|
24天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的摄影网上预约管理系统
基于Python+Vue开发的摄影网上预约管理系统(前后端分离),影楼婚纱摄影,这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的在线摄影预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
23 6
基于Python+Vue开发的摄影网上预约管理系统
|
23天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的新闻管理系统
这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
20 4
基于Python+Vue开发的新闻管理系统
|
25天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的房产销售管理系统
基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
22 4
基于Python+Vue开发的房产销售管理系统
|
25天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的美容预约管理系统
基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
21 3
基于Python+Vue开发的美容预约管理系统
|
6天前
|
Linux Android开发 iOS开发
开源的Python库,用于开发多点触控应用程序
Kivy是一款开源Python库,专为开发多点触控应用设计,支持Android、iOS、Linux、OS X和Windows等平台。本文将指导你使用Kivy创建“Hello World”应用并打包成Android APK。首先通过`pip install kivy`安装Kivy,然后创建并运行一个简单的Python脚本。接着,安装Buildozer并通过`buildozer init`生成配置文件,修改相关设置后,运行`buildozer -v android debug`命令打包应用。完成构建后,你将在`./bin/`目录下找到类似`your-app-debug.apk`的文件。
12 2
|
11天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
39 3
|
18天前
|
IDE 数据挖掘 开发工具
python开发
python开发
13 3
|
20天前
|
SQL JavaScript 前端开发
用Java、Python来开发Hive应用
用Java、Python来开发Hive应用
22 6
|
22天前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的商城管理系统
是基于Python+Vue开发的商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
29 5
下一篇
无影云桌面