Python用Optional标注参数仍提示必填 如何正确定义可选参数
原因说明
Optional 属于Python类型提示体系的语法,仅用于标注参数允许的取值范围,不会对函数的实际参数规则产生任何影响。你当前的写法仅代表url参数的合法取值为HttpUrl类型或者None,但由于没有设置默认值,该参数仍然是调用时必须传入的必填参数,因此会触发参数缺失的报错。
正确定义方式
要实现调用时可以不传该参数的效果,只需要给参数添加默认值None即可,修改后的函数定义如下:
def create_ads_task( template_id: int, ad_account_id: str, adset_ids: List[str], placements: Dict[str, str], locales: List[Locale], url: Optional[HttpUrl] = None, ) -> List[Dict[str, Union[str, int]]]: ...body...
修改后调用函数时如果不传url,该参数会自动被赋值为None,完全匹配「前端有时不传递该参数」的使用场景。
如果使用Python 3.10及以上版本,也可以用更简洁的联合类型写法替代Optional:
url: HttpUrl | None = None
内容的提问来源于stack exchange,提问作者Jekson
相关产品推荐
相关产品推荐

