`Dict[str, Any]` 在 Python 中是什么意思?

What does `Dict[str, Any]` mean in Python?

我指的是可用的文档 here 以了解在使用函数注释时如何定义 return 类型。

我不明白 Dict[str, Any] 中的 str 指的是什么。 str 是否指字典的键和 Any (意思是,它可以是一个字符串或一个整数)指的是字典值的类型? 编辑: 在上面提到的link中提到了

The PEP 484 type Dict[str, Any] would be suitable, but it is too lenient, as arbitrary string keys can be used, and arbitrary values are valid.

谁能解释一下 arbitrary string keys 指的是什么?我知道键是字符串,但是当我们说 arbitrary string keys 是不是意味着字典可以接受任何字符串键?或者 arbitrary 这个词在这里还有其他意义吗?

是的!通常 python 变量是可变的(类型可以改变),但像这样指定它是很好的文档,并且可以非常清楚地说明什么去哪里。

可以在这里找到更多使用文档! https://docs.python.org/3/library/typing.html

编辑:详细说明更新问题的答案

您参考的 PEP 文档指出类型提示虽然有用,但仍然容易出错。

通过指定 Dict[str, Any]str 可以是“arbitrary”,这意味着它可以是任何字符串键(即 nameageheighthumidity)。在这些键中,人们可能会认为“humidity”不应该是此 dict 的字符串键之一,但在发生某些错误之前没有办法检查或强制执行它在路上(因此,它是 "arbitrary";没有规则来管理这个 dict 的 "allowed" 字符串键)。

因此,根据文档,指定此 class(派生自 TypedDict):

class Movie(TypedDict):
    name: str
    year: int

将特别限制用户使用字符串键 nameyear(各自的值键入 strint)。用户将无法 "arbitrarily" 添加新密钥(即 humidity)到此“MovieTypedDict,或分配一个非 int值为 Movie["year"].