1. 基本缩进规则
- 使用 4个空格 作为一级缩进(推荐)
- 避免混合使用空格和制表符(Tab)
- 续行缩进应该与包裹元素对齐或使用悬挂缩进
def function_name(parameter_one, parameter_two,parameter_three):print("Hello World")
result = some_function('first_arg', 'second_arg','third_arg')
2. 最大行长度
- 每行不超过 79个字符(PEP 8推荐)
- 对于文档字符串或注释不超过 72个字符
3. 空行使用
- 顶层函数和类定义之间用 两个空行
- 类内方法定义之间用 一个空行
- 函数内逻辑段落之间可适当使用空行分隔
class MyClass:def method_one(self):passdef method_two(self):passdef top_level_function():pass
4. 导入(import)格式
- 每个导入通常独占一行
- 导入顺序:标准库 → 第三方库 → 本地应用/库
- 每组导入之间用空行分隔
import os
import sysfrom datetime import datetime, timedeltaimport numpy as np
import pandas as pdfrom my_module import MyClass
5. 表达式和语句中的空格
- 二元运算符两侧各加一个空格
- 函数参数列表中,逗号后加空格
- 不要紧贴括号、方括号或大括号内部加空格
x = a + b
result = func(a, b)
lst = [1, 2, 3]
x=a+b
result = func(a,b)
lst = [ 1, 2, 3 ]
6. 注释格式
- 行内注释:至少与语句间隔2个空格,#号后加1个空格
- 块注释:每行以#号开头,后跟1个空格
- 文档字符串:使用三重引号
x = x + 1 def my_function():"""这是一个文档字符串这里可以详细描述函数的功能、参数和返回值。"""pass
7. 命名约定
- 变量和函数名:
lowercase_with_underscores
(小写+下划线) - 类名:
CapitalizedWords
(驼峰式) - 常量名:
ALL_CAPS
(全大写) - 私有变量/方法:
_single_leading_underscore
(单下划线开头)
8. 字符串引号
- 普通字符串使用单引号
'...'
- 字符串中包含单引号时使用双引号
"..."
- 多行字符串使用三重双引号
"""..."""
name = 'John'
message = "Don't worry"
docstring = """这是一个
多行字符串"""
9. 书写注意事项
- 避免使用分号
;
将多条语句放在一行 - 比较操作时,
None
应该用is
或is not
,而不是==
- 使用
if x is not None
而不是if not x is None
10. 函数定义规范
- 函数参数排列顺序:位置参数 → 默认参数 → 可变参数 → 关键字参数
- 函数定义与调用时保持参数对齐
def request(method, url, params=None, data=None, headers=None, **kwargs):"""发送HTTP请求"""pass
response = request('GET','https://example.com',params={'key': 'value'},headers={'Content-Type': 'application/json'}
)
11. 类定义规范
- 类方法第一个参数必须是
self
- 类方法之间用空行分隔
- 继承类列表中的基类应该按从最抽象到最具体的顺序排列
class Animal:passclass Dog(Animal):def __init__