• 【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)
    
    
  • 相关阅读:
    Sql Server系列:子查询
    开发板上网详细教程
    MySQL数据库如何线上修改表结构
    基于SSM实现家政管理平台的开发和实现
    黑马苍穹外卖前端求解
    SpringAOP是什么?为什么要有SpringAOP?
    面试官:并发编程实战会吗?(线程控制操作详解)
    编译原理 x - 练习题
    mybatis的一些常用操作
    网络工程师-HCIA网课视频学习(更换策略,这个网课质量不行)
  • 原文地址:https://blog.csdn.net/qq_18296979/article/details/140383611