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

10
我参考这里的文档来理解在使用函数注释时如何定义返回类型。
我不明白 Dict[str, Any] 中的 str 是什么意思。这里的 str 是指字典中的键吗?Any(即可以是字符串或整数)是指字典值的类型吗? 编辑: 在上述链接中,提到:

PEP 484 类型 Dict[str,Any] 是合适的,但它太宽松了,因为可以使用任意字符串键,并且任意值都是有效的。

有人能解释一下,arbitrary string keys 是什么意思吗?我知道键是字符串,但当我们说arbitrary string keys时,是否只是指字典可以接受任何字符串键?还是这里的“任意”一词还有其他含义?

2
是的,你理解得很正确。 - Sami Kuhmonen
1个回答

7

没错!通常情况下,Python 变量是可变的(类型可以改变),但像这样指定它是很好的文档说明,并且清楚地说明了应该放置在哪里。

此处可以找到更多用法文档!https://docs.python.org/3/library/typing.html

编辑:详细阐述更新问题的答案

你所提到的 PEP 文档指出,虽然类型提示很有用,但仍存在易错的问题。

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

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

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

将专门限制用户创建一种新的dict(即TypedDict),其具有字符串键nameyear(相应值为strint类型)。用户将无法“随意”向此“MovieTypedDict添加新键(例如humidity),或者将非int值分配给Movie["year"]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接