如何在Python函数中缺失指定键时抛出TypeError?
问题:如何检查关键字参数并在缺少指定键时抛出TypeError?
需求:当函数的关键字参数字典中缺少image_title或image_id任意一个键时,需抛出TypeError错误。
用户初始代码
def image_info(**o): print(type(o)) print(o) { 'image_title': 'my_cat', 'image_id': 1234 } info = ( f"\"Image '{o['image_title']}'\"" f" has id {o['image_id']}" ) return info info = image_info(image_title='my_cat', image_id=1234) print(info)
用户尝试的错误代码
def image_info(**o): if 'image_title' + 'image_id': raise TypeError("ERROR") return (image_info)
正确实现方法
方法一:直接检查指定键
def image_info(**o): # 检查两个必要参数是否都存在 if 'image_title' not in o or 'image_id' not in o: raise TypeError("必须提供image_title和image_id两个参数") info = f"\"Image '{o['image_title']}'\" has id {o['image_id']}" return info # 正常调用示例 info = image_info(image_title='my_cat', image_id=1234) print(info) # 以下调用会触发TypeError # image_info(image_title='my_cat') # 缺少image_id # image_info(image_id=1234) # 缺少image_title
方法二:可扩展的批量检查(适合多必要参数场景)
如果后续需要增加更多必要参数,这种方式更灵活:
def image_info(**o): required_keys = ['image_title', 'image_id'] # 筛选出所有缺失的键 missing_keys = [key for key in required_keys if key not in o] if missing_keys: raise TypeError(f"缺少必要参数:{', '.join(missing_keys)}") info = f"\"Image '{o['image_title']}'\" has id {o['image_id']}" return info
错误代码问题说明
你之前的错误代码中,'image_title' + 'image_id'会拼接成字符串'image_titleimage_id',非空字符串在Python中会被判定为True,导致条件永远成立,无论参数是否齐全都会抛出错误,完全没有实现参数检查的逻辑。
内容的提问来源于stack exchange,提问作者VladislavGantz
相关产品推荐
相关产品推荐

