字典参数的类型注释

Jon*_*man 9 python

我可以为 python 中的函数参数指定特定的字典形状/形式吗?

就像在打字稿中一样,我指示info参数应该是带有字符串name和数字的对象age

function parseInfo(info: {name: string, age: number}) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

有没有办法用 python 函数来做到这一点,否则:

def parseInfo(info: dict):
  # function body
Run Code Online (Sandbox Code Playgroud)

或者这可能不是Pythonic,我应该使用命名关键字或类似的东西?

Dan*_*ejo 19

在 Python 3.8+ 中,您可以使用替代语法来创建TypedDict

from typing import TypedDict

Info = TypedDict('Info', {'name': str, 'age': int})


def parse_info(info: Info):
    pass
Run Code Online (Sandbox Code Playgroud)

来自 TypedDict 的文档:

TypedDict 声明一个字典类型,该类型期望其所有实例都具有一组特定的键,其中每个键都与一致类型的值关联。这种期望不会在运行时检查,而是仅由类型检查器强制执行。