PEP 821:在 Callable 类型提示中支持解包 TypedDict

PEP 821:在 Callable 类型提示中支持解包 TypedDict

💡 原文英文,约1800词,阅读约需7分钟。
📝

内容提要

PEP 821 提议在 Callable 类型提示中支持 Unpack[TypedDict],以简化关键词参数的定义,提升可读性和一致性,同时保持向后兼容性。

🎯

关键要点

  • PEP 821 提议在 Callable 类型提示中支持 Unpack[TypedDict],以简化关键词参数的定义。
  • 当前 Callable 假设参数为位置参数,无法直接指定关键词参数,导致定义回调协议时冗长。
  • 新语法允许直接在 Callable 中重用 TypedDict 定义的关键词结构,提升可读性和一致性。
  • 该提案保持向后兼容性,允许在 Callable 中使用 Unpack[TypedDict],并支持位置参数与关键词参数的结合。
  • TypedDict 中标记为 NotRequired 的键对应于可选的关键词参数,调用者可以选择省略这些参数。
  • 如果 TypedDict 指定了 extra_items 参数,Callable 必须接受额外的关键词参数,且类型需匹配。
  • 该提案的目标是使得使用特定关键词参数的回调函数的定义更加简洁和一致。

延伸问答

PEP 821 的主要目的是什么?

PEP 821 的主要目的是在 Callable 类型提示中支持 Unpack[TypedDict],以简化关键词参数的定义,提升可读性和一致性。

PEP 821 如何改善 Callable 的使用?

PEP 821 允许在 Callable 中直接重用 TypedDict 定义的关键词结构,从而减少了定义回调协议时的冗长性。

在 PEP 821 中,如何处理可选的关键词参数?

在 PEP 821 中,TypedDict 中标记为 NotRequired 的键对应于可选的关键词参数,调用者可以选择省略这些参数。

PEP 821 是否保持向后兼容性?

是的,PEP 821 保持向后兼容性,允许在 Callable 中使用 Unpack[TypedDict],并支持位置参数与关键词参数的结合。

PEP 821 中的 Unpack[TypedDict] 有什么语法要求?

在 PEP 821 中,可以使用 Callable[[Unpack[TD]], R] 或 Callable[Unpack[TD], R] 的形式,其中 TD 是一个 TypedDict。

PEP 821 提案中有哪些替代方案被考虑?

PEP 821 考虑了继续推荐基于 Protocol 的回调、引入新的 Callable 语法、采用回调字面量语法等替代方案,但最终选择了最小的扩展。

➡️

继续阅读