Python案例如何规范代码书写?

wen python案例 79

本文目录导读:

Python案例如何规范代码书写?

  1. 命名规范
  2. 缩进与空格
  3. 行长度与换行
  4. 导入规范
  5. 注释规范
  6. 完整规范案例
  7. 常用规范检查工具

在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
  1. 缩进:使用4个空格,不要使用Tab
  2. 行长度:每行不超过79个字符
  3. 空行:函数之间2个空行,类之间2个空行
  4. 命名:类名驼峰,变量/函数小写+下划线,常量全大写
  5. 导入:每个导入单独一行,按标准库、第三方库、本地库分组
  6. 注释:使用英文或中文,docstring用于文档说明

遵循这些规范能让代码更易读、易维护,建议配合自动化工具使用。

抱歉,评论功能暂时关闭!