Python 中的“Dict[str, Any]”是什么意思?

Nat*_*sha 11 annotations function python-3.x

我指的是此处提供的文档,以了解如何在使用函数注释时定义返回类型。

我无法理解 strDict[str, Any]指的是什么。是否str引用字典的键并且Any(意味着它可以是字符串或整数)引用字典值的类型?编辑:在上述链接中,提到

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

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

joe*_*ion 8

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

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

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

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

通过指定Dict[str, Any]str可以是“ arbitrary”,这意味着它可以是任何内容的字符串键(即name, age, height, humidity)。在这些键中,人们可能会认为“ humidity”不应该是 this 的字符串键之一dict,但是没有一种方法可以检查或强制执行,直到将来发生一些错误(因此,它是“任意的”) ";没有规则来管理 this 的“允许”字符串键dict

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

class Movie(TypedDict):
    name: str
    year: int
Run Code Online (Sandbox Code Playgroud)

将特别限制用户使用字符串键和(分别输入值和)创建一种新类型dict(a ) 。用户将无法“任意”向此“ ”添加新键(即 ) ,或以其他方式为 分配非值。TypedDictnameyearstrinthumidityMovieTypedDictintMovie["year"]