如果不解包,如何以最一般的形式输入提示参数和 kwargs?

How to type hint args and kwargs, if not unpacking, in most general form?

假设我想使用 *args**kwargsargskwargs 传递给函数 而没有

在活动中,最常用的类型提示是什么?

argsIterablekwargsMapping吗?


示例代码

这是使用 Python 3.8.

制作的一些示例代码
from typing import Mapping, Iterable

def foo(*args, **kwargs) -> None:
    pass

def foo_dispatcher(foo_args: Iterable, foo_kwargs: Mapping) -> None:
    foo(*foo_args, **foo_kwargs)

foo_dispatcher([0], {"ham": 1})

如果你知道你的实际参数和 kwargs 那么你显然可以使用细节,包括 TypedDict 作为参数。

在这种最常见的情况下,您可以使用 IterableMapping[str, object]

由于命名的非关键字、可变长度位置参数等,对于已知函数,这里很可能会出现过度输入。您可能不想禁止 def foo(a, b, c=4) 被调用为 foo(1, b=1, c=2)