MyPy缺少返回语句

2024-05-17 11:59:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我对mypy抛出一个错误,说我缺少一个返回语句表示不满。虽然函数中有一个,但它仍然继续存在。我做错什么了吗

(我正在使用python3.8)

def misc_menu_choice(misc_menu_input: str) -> str:
    """Provides mapping for the misc_menu"""
    try:
        if misc_menu_input == '1':
            list_all()
        if misc_menu_input == '2':
            intermarriages()
        elif misc_menu_input == '3':
            toggle_program()
            toggle_living_only()

        elif misc_menu_input == '4':

            selection = get_user_input(main_menu())
            main_menu_selection(selection)
        elif misc_menu_input == '':

            print(f'Current ID: {current_person}\t\t\
Living Only: {program_status}')
            miscellanious_menu_prompt()

        else:

            print('Please select again')
            miscellanious_menu_prompt()
        return misc_menu_input

    except ValueError:
        print("That is not an option")
        miscellanious_menu_prompt()

Tags: inputifmain错误programpromptmiscmenu
1条回答
网友
1楼 · 发布于 2024-05-17 11:59:17

您对函数签名进行了如下注释:

def misc_menu_choice(misc_menu_input: str) -> str: ...

注释声明函数接受单个参数misc_menu_input作为字符串,并返回字符串。但是,这不是您的函数所做的

如果try子句中没有ValueError,则函数将遵循给定的注释,并返回一个字符串。但是,如果在try子句中存在ValueError,则跳过try子句的其余部分,并执行except子句。在except子句中没有return语句,这意味着如果有一个ValueError导致正在执行的except子句,那么函数将返回None,与您给出的注释相矛盾

相关问题 更多 >