我遇到了 mypy 抛出错误并提示我缺少 return 语句的问题。虽然我的函数中有一个,但它仍然存在。我是不是做错了什么?
(我使用的是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()
您已经像这样注释了您的函数签名:
def misc_menu_choice(misc_menu_input: str) -> str: ...
您的注释表明您的函数接受单个参数,
misc_menu_input
,一个字符串,并返回一个字符串。然而,这不是你的函数所做的。
如果
ValueError
子句中没有 try
,则您的函数将遵循您为其提供的注释,并返回一个字符串。但是,如果 ValueError
子句中存在 try
,则跳过 try
子句的其余部分,并执行 except
子句。 return
子句中没有except
语句,这意味着如果有ValueError
导致执行except
子句,您的函数将返回None
,这与您给它的注释相矛盾。