本文目录导读:

在Python中规范代码书写主要遵循PEP 8(Python Enhancement Proposal 8)风格指南,下面我通过具体案例说明如何规范书写Python代码。
命名规范
# ❌ 不规范
class person: # 类名应该使用驼峰命名
def __init__(self, name, age):
self.Name = name # 变量名应该小写
self.Age = age # 变量名应该小写
def getData(): # 函数名应该小写加下划线
pass
MAXCOUNT = 100 # 常量应该使用全大写
# ✅ 规范
class Person: # 类名使用驼峰命名法
def __init__(self, name, age):
self.name = name # 实例变量小写
self.age = age
def get_info(self): # 函数/方法名使用小写+下划线
return f"{self.name} is {self.age} years old"
MAX_COUNT = 100 # 常量使用全大写+下划线
def fetch_user_data(): # 函数名使用小写+下划线
pass
缩进与空格
# ❌ 不规范
def calculate(x,y,z): # 缺少空格
result = x+y*z # 缩进不对(应该是4个空格),运算符周围缺少空格
if result>100:
print("too big") # 缩进不一致
else:
print("ok")
return result
# ✅ 规范
def calculate(x, y, z): # 逗号后有空格
"""计算函数示例"""
result = x + y * z # 4个空格缩进,运算符周围有空格
if result > 100: # 比较运算符周围有空格
print("too big")
else:
print("ok")
return result
行长度与换行
# ❌ 不规范(一行太长)
student_info = {"name": "张三", "age": 20, "grade": "大三", "major": "计算机科学与技术", "score": 95}
# ✅ 规范(使用隐式换行)
student_info = {
"name": "张三",
"age": 20,
"grade": "大三",
"major": "计算机科学与技术",
"score": 95
}
# ❌ 不规范
result = function1(param1, param2, param3, param4, param5, param6, param7, param8)
# ✅ 规范(使用括号换行)
result = function1(
param1, param2, param3,
param4, param5, param6,
param7, param8
)
导入规范
# ❌ 不规范 import sys, os, json, datetime # 一行导入多个模块 import numpy # ✅ 规范 import sys import os import json from datetime import datetime # 第三方库和标准库之间空一行 import numpy as np # 或者分组合并 import os import sys from datetime import datetime import numpy as np import pandas as pd
注释规范
# ❌ 不规范
def calc(a,b):
return a+b #这是一个加法函数 # 注释不规范
# ✅ 规范
def calculate(a: int, b: int) -> int:
"""
计算两个整数的和
Args:
a: 第一个加数
b: 第二个加数
Returns:
两个数的和
"""
return a + b # 返回计算结果
完整规范案例
"""
学生成绩管理系统
该模块用于管理学生信息和成绩
"""
import os
import sys
from typing import Dict, List, Optional
class Student:
"""学生类"""
def __init__(self, name: str, student_id: str):
"""
初始化学生对象
Args:
name: 学生姓名
student_id: 学号
"""
self.name = name
self.student_id = student_id
self.scores: Dict[str, float] = {}
def add_score(self, subject: str, score: float) -> None:
"""
添加成绩
Args:
subject: 科目名称
score: 成绩
"""
self.scores[subject] = score
def get_average_score(self) -> float:
"""计算平均分"""
if not self.scores:
return 0.0
total = sum(self.scores.values())
return total / len(self.scores)
class GradeManager:
"""成绩管理类"""
def __init__(self):
self.students: List[Student] = []
def add_student(self, student: Student) -> None:
"""添加学生"""
self.students.append(student)
def get_top_students(self, top_n: int = 3) -> List[Student]:
"""
获取成绩最好的学生
Args:
top_n: 返回前N名学生
Returns:
成绩最好的学生列表
"""
# 计算每个学生的平均分
students_with_avg = [
(student, student.get_average_score())
for student in self.students
]
# 按平均分降序排序
sorted_students = sorted(
students_with_avg,
key=lambda x: x[1],
reverse=True
)
# 返回前N名学生
return [student for student, _ in sorted_students[:top_n]]
def main() -> None:
"""主函数"""
# 创建成绩管理器
manager = GradeManager()
# 创建学生并添加成绩
students_data = [
("张三", "2021001", {"数学": 95, "英语": 88, "语文": 92}),
("李四", "2021002", {"数学": 78, "英语": 90, "语文": 85}),
("王五", "2021003", {"数学": 92, "英语": 85, "语文": 88}),
]
for name, student_id, scores in students_data:
student = Student(name, student_id)
for subject, score in scores.items():
student.add_score(subject, score)
manager.add_student(student)
# 输出前2名学生
top_students = manager.get_top_students(top_n=2)
print("成绩最好的学生:")
for student in top_students:
avg = student.get_average_score()
print(f"{student.name} - 平均分:{avg:.2f}")
if __name__ == "__main__":
main()
常用规范检查工具
# 安装工具 pip install flake8 pylint black isort # 使用 flake8 检查代码规范 flake8 your_code.py # 使用 black 自动格式化代码 black your_code.py # 使用 isort 整理导入顺序 isort your_code.py
- 缩进:使用4个空格,不要使用Tab
- 行长度:每行不超过79个字符
- 空行:函数之间2个空行,类之间2个空行
- 命名:类名驼峰,变量/函数小写+下划线,常量全大写
- 导入:每个导入单独一行,按标准库、第三方库、本地库分组
- 注释:使用英文或中文,docstring用于文档说明
遵循这些规范能让代码更易读、易维护,建议配合自动化工具使用。