本文目录导读:

在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用于文档说明
遵循这些规范能让代码更易读、易维护,建议配合自动化工具使用。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播