python - MyPy 缺少返回语句
问题描述
我遇到了 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()
解决方案
您已经像这样注释了您的函数签名:
def misc_menu_choice(misc_menu_input: str) -> str: ...
您的注释表明您的函数接受单个参数 ,misc_menu_input
一个字符串,并返回一个字符串。但是,这不是您的功能所做的。
如果子句ValueError
内没有try
,您的函数将遵循您给它的注释,并返回一个字符串。但是,如果子句ValueError
内部有一个,则跳过try
该子句的其余部分,并执行该子句。子句中没有声明,这意味着如果有一个导致该子句被执行的语句,您的函数将返回,与您给它的注释相矛盾。try
except
return
except
ValueError
except
None
推荐阅读
- jhipster - 插件 [id: 'com.google.cloud.tools.jib', version: '0.9.11'] 未找到
- python - 如何更改散景中箭头线的颜色?
- arduino - 使用 arduino 读取 RFID
- android - 如何在不触发其他意图的情况下使用 getIntent()?
- php - PHP 7.3 PDO 试图获取非对象的属性
- functional-programming - 我在第一个成员中遇到错误(第二行代码)
- javascript - throttle executes the function at most one time per wait period right?
- javascript - Angular 7 - 如何使 JSON 的初始输入值可见?
- python - 基于索引的结构张量
- django - Django:计算来自同一模型的行上的字段之间的差异