将 kwargs 传递给复杂函数

问题描述 投票:0回答:1

考虑以下尝试向函数

parent
child
添加类型提示:

def parent(*, a: Type1, b: Type2):
    ...

def child(*, c: Type3, d: Type4, **kwargs):
    parent(**kwargs)
    ...

MyPy 抱怨

kwargs
具有
Dict[str, Any]
类型,但参数
a
b
分别需要
Type1
Type2

我知道解决这个错误的方法是按以下方式重写

child

def child(*, a: Type1, b: Type2, c: Type3, d: Type4, **kwargs):
    parent(a=a, b=b)
    ...

但是,如果

parent
的参数列表很多长,或者函数
grandchild
有自己的参数列表并且必须调用
child
,该怎么办?您是否需要枚举所有下游函数的参数及其类型?或者有没有一种优雅的方式来处理
**kwargs
的“按键”输入?

python python-3.5 mypy type-hinting
1个回答
0
投票

mypy 现在支持使用 Unpack + TypedDict 注释 **kwargs,根据 PEP 692:https://peps.python.org/pep-0692/

© www.soinside.com 2019 - 2024. All rights reserved.