簡體   English   中英

如果不拆包,如何以最一般的形式輸入提示 args 和 kwargs?

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

假設我想在使用*args**kwargs的情況下將argskwargs傳遞給 function 。

在這種情況下,最常用的類型提示是什么?

args是否可Iterablekwargs是否可以Mapping


示例代碼

這是使用 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})

如果您知道實際的 arguments 和 kwargs,那么您顯然可以使用這些細節,包括TypedDict的 TypedDict。

在這種最一般的情況下,您可以使用IterableMapping[str, object]

由於命名的非關鍵字、可變長度的位置 arguments 等,這里很有可能過度鍵入已知函數。您可能不想禁止將def foo(a, b, c=4)稱為foo(1, b=1, c=2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM