【python】函数重构

函数重构

函数重构是指对现有函数进行修改和优化的过程。重构的目的是改善代码的可读性、可维护性和灵活性,同时保持其功能不变。函数重构通常包括以下步骤:

  1. 理解函数的功能和目的。了解函数的作用和期望结果,确定重构的目标。

  2. 检查函数的代码质量。查看函数的代码是否清晰、简洁、可读,有无可改进之处。

  3. 提取重复的代码。如果函数中有重复的代码块,可以将其提取为单独的函数或方法,避免重复编写代码。

  4. 简化函数逻辑。如果函数的逻辑过于复杂,可以将其拆分成多个较小的函数,每个函数只负责一部分逻辑。

  5. 优化函数参数。检查函数的参数是否过多或过少,是否有不必要的参数,可以考虑重新设计参数,使函数的接口更清晰和简洁。

  6. 修改函数的命名。函数的命名应该准确地描述函数的功能和作用,可以根据函数的具体功能和语义重新命名。

  7. 添加注释和文档。为函数添加合适的注释和文档,使其他开发人员能够更容易地理解和使用函数。

  8. 运行测试用例。确保重构后的函数仍然能够正确地完成其功能,并通过运行测试用例进行验证。

通过函数重构,可以改善代码的质量和可维护性,提高开发效率和代码的可读性。同时,重构还可以帮助发现和修复代码中的潜在问题和bug。函数重构是指对现有函数进行修改和优化的过程。重构的目的是改善代码的可读性、可维护性和灵活性,同时保持其功能不变。函数重构通常包括以下步骤:

  1. 理解函数的功能和目的。了解函数的作用和期望结果,确定重构的目标。

  2. 检查函数的代码质量。查看函数的代码是否清晰、简洁、可读,有无可改进之处。

  3. 提取重复的代码。如果函数中有重复的代码块,可以将其提取为单独的函数或方法,避免重复编写代码。

  4. 简化函数逻辑。如果函数的逻辑过于复杂,可以将其拆分成多个较小的函数,每个函数只负责一部分逻辑。

  5. 优化函数参数。检查函数的参数是否过多或过少,是否有不必要的参数,可以考虑重新设计参数,使函数的接口更清晰和简洁。

  6. 修改函数的命名。函数的命名应该准确地描述函数的功能和作用,可以根据函数的具体功能和语义重新命名。

  7. 添加注释和文档。为函数添加合适的注释和文档,使其他开发人员能够更容易地理解和使用函数。

  8. 运行测试用例。确保重构后的函数仍然能够正确地完成其功能,并通过运行测试用例进行验证。

通过函数重构,可以改善代码的质量和可维护性,提高开发效率和代码的可读性。同时,重构还可以帮助发现和修复代码中的潜在问题和bug。

pycharm函数重构步骤

  1. 选择要重构的函数,在PyCharm中打开该函数所在的文件。
  2. 鼠标右键点击函数名称或者函数体,选择"Refactor",然后选择"Extract"。
  3. 在弹出的菜单中选择"Function",然后输入新的函数名称。
  4. 在弹出的对话框中,选择要提取的代码块,包括函数参数和函数体内的代码。
  5. 点击"OK"按钮,PyCharm将会自动在当前文件中创建一个新的函数,并将选中的代码块移动到新的函数中。
  6. 在原来的位置上,会生成一个函数调用语句,调用新创建的函数。
  7. 检查新创建的函数是否正确,如果需要修改参数或者函数体内的代码,可以在新创建的函数中进行修改。
  8. 如果需要修改函数调用处的参数,可以在原来的位置上修改函数调用语句。
  9. 确保重构后的代码没有错误,并且与之前的代码功能一致。
  10. 提交代码变更,完成函数重构。

函数重构练习

学生信息管理系统是一个控制台应用,它使用 Python 编写,包含以下功能:

  1. 查询所有信息:通过 select_all 函数实现,它遍历学生列表并打印每个学生的学号、姓名、年龄和分数。

  2. 新增信息:由 add_one 函数负责,提示用户输入学生的学号、姓名、年龄和分数,然后将这些信息存储在一个字典中,并检查学号是否已经存在于学生列表中,以避免重复。

  3. 修改信息update_one 函数用于根据学号修改学生的分数。如果学号存在,则更新其分数;否则,给出错误提示。

  4. 删除信息:通过 delete_one 函数,根据学号删除学生信息。如果学号不存在,给出错误提示。

  5. 退出exit_system 函数用于安全地关闭程序。

  6. 主菜单data_manager 函数作为系统的主入口点,显示菜单供用户选择,并根据用户的选择调用相应的函数。此外,它还处理了非法输入的情况。

系统使用一个名为 stu_dic 的列表来存储学生信息,其中每个学生的信息都保存在一个字典中。

# 写一个控制台版的学生信息管理系统
# 菜单的输出print
#  菜单
#  1、查询所有信息
#  2、新增信息
#  3、修改信息
#  4、删除信息
#  5、退出
# 菜单的选择input
# 当输入1时,遍历stu
# 当输入2时,输入需要新增的信息(学号、姓名、年龄、得分),将数据插入到stu
# 3时,根据id修改得分
# 4时,根据id删除该条信息
# 5,结束
# 除了5以外的任意功能操作结束后需要返回主菜单界面
# 定义一个学生信息列表,每个学生信息包括学号、姓名、年龄和分数
import sys

# 初始化学生信息列表
d1 = {"id": 1, "name": "zl", "age": 20, "score": 100}
d2 = {"id": 2, "name": "jwj", "age": 21, "score": 95}
d3 = {"id": 3, "name": "zff", "age": 24, "score": 90}
stu_dic = [d1, d2, d3]


# 打印所有学生信息
def select_all(stu):
    """
    打印学生列表中的所有学生信息。

    参数:
    stu -- 学生信息列表。
    """
    print("学号\t姓名\t年龄\t分数")
    for i in stu:
        for j in i.values():
            print(j, end="\t")
        print()


# 根据姓名查询并打印学生信息
def select_one(stu):
    """
    根据输入的姓名查询并打印学生信息。

    参数:
    stu -- 学生信息列表。
    """
    temp_name = input("请输入要查询的学生姓名:")
    for i in stu:
        if i["name"] == temp_name:
            print("学号\t姓名\t年龄\t分数")
            for j in i.values():
                print(j, end="\t")
            print()
            break
    else:
        print("查无此人")


# 添加学生信息
def add_one(stu):
    """
    添加学生信息到列表中。

    参数:
    stu -- 学生信息列表。
    """
    while True:
        print("请输入学号、姓名、年龄、分数")
        # 输入并构建一个新的学生信息
        temp_id = input("学号:")
        temp_name = input("姓名:")
        temp_age = input("年龄:")
        temp_score = input("分数:")
        if temp_id.isdigit() and temp_age.isdigit() and temp_score.isdigit():
            temp_info = {
                "id": int(temp_id),
                "name": temp_name,
                "age": int(temp_age),
                "score": int(temp_score),
            }
            if temp_info["id"] in [i["id"] for i in stu]:
                print("学号已存在,请重新输入")
                break
            else:
                # 将新学生信息添加到学生信息列表中
                stu.append(temp_info)
        else:
            print("输入错误,请重新输入")
        # 询问用户是否继续添加
        continue_check = input("是否继续添加?y/n:")
        # 如果用户不打算继续添加,则退出循环
        if continue_check == "n":
            break


# 修改学生信息
def update_one(stu):
    """
    根据输入的学号修改学生信息中的分数。

    参数:
    stu -- 学生信息列表。
    """
    # 修改学生分数
    temp_id = input("请输入要修改的学号:")
    temp_score = input("请输入修改后的分数:")
    if temp_id.isdigit() and temp_score.isdigit():
        temp_id = int(temp_id)
        temp_score = int(temp_score)
        for i in stu:
            if i["id"] == temp_id:
                # 找到对应学号的学生,修改其分数
                i["score"] = temp_score
                print("修改成功")
                break
        else:
            print("学号不存在")
    else:
        print("输入错误,请重新输入")


# 删除学生信息
def delete_one(stu):
    """
    根据输入的学号删除学生信息。

    参数:
    stu -- 学生信息列表。
    """
    # 删除学生信息
    temp_id = input("请输入要删除的学号:")
    if temp_id.isdigit():
        temp_id = int(temp_id)
        for i in stu:
            if i["id"] == temp_id:
                # 找到对应学号的学生,从列表中删除
                stu.remove(i)
                print("删除成功")
                break
            else:
                print("学号不存在")
    else:
        print("输入错误,请重新输入")


# 退出系统
def exit_system():
    """
    退出学生信息管理系统。
    """
    print("退出系统成功")
    sys.exit()


# 主菜单函数,提供学生信息管理的各种选项
def data_manager(stu):
    """
    学生信息管理系统的主菜单函数。

    参数:
    stu -- 学生信息列表。
    """
    while True:
        print(
            """#  菜单
#  1、查询信息
#  2、新增信息
#  3、修改分数
#  4、删除信息
#  5、退出系统"""
        )
        # 获取用户的选择
        number = int(input("请输入序号:"))
        # 根据用户的选择执行不同的操作
        if number == 1:
            # 查询所有学生信息
            print(
                """
            1. 查询所有学生信息
            2. 查询单个学生信息
"""
            )
            select_number = input("请输入序号:")
            if select_number.isdigit():
                select_number = int(select_number)
                if select_number == 1:
                    select_all(stu)
                elif select_number == 2:
                    select_one(stu)
                else:
                    print("输入错误,请重新输入")
            else:
                print("输入错误,请重新输入")
        elif number == 2:
            add_one(stu)
        elif number == 3:
            update_one(stu)
        elif number == 4:
            delete_one(stu)
        elif number == 5:
            # 退出系统
            exit_system()
        else:
            # 如果用户输入了无效的选项
            print("输入错误,请重新输入")


# 启动学生信息管理系统主菜单
data_manager(stu_dic)

相关推荐

  1. python函数重构

    2024-07-13 09:06:04       28 阅读
  2. Python重要的内建高阶函数

    2024-07-13 09:06:04       45 阅读
  3. 重构与优化-优化函数调用(5)

    2024-07-13 09:06:04       31 阅读
  4. Python函数——函数介绍

    2024-07-13 09:06:04       49 阅读
  5. python函数

    2024-07-13 09:06:04       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 09:06:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 09:06:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 09:06:04       58 阅读
  4. Python语言-面向对象

    2024-07-13 09:06:04       69 阅读

热门阅读

  1. 服务端生成RSA密钥实例

    2024-07-13 09:06:04       25 阅读
  2. Python面试题:解释一下什么是 `__new__` 方法

    2024-07-13 09:06:04       26 阅读
  3. linux UDP通讯:接口函数&示例

    2024-07-13 09:06:04       23 阅读
  4. Python实现文件访问和加密GUI应用程序

    2024-07-13 09:06:04       19 阅读
  5. 【Docker 系列】学习路线

    2024-07-13 09:06:04       18 阅读
  6. 奖励关(概率dp+状压)

    2024-07-13 09:06:04       20 阅读
  7. QT获得本地IP以及MAC地址

    2024-07-13 09:06:04       22 阅读