You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:27:36