我参考了可用的这里文档,以了解如何在使用函数注释时定义返回类型。
我不明白Dict[str, Any]
中的str指的是什么。str
引用字典的键,Any
(意思是,它可以是字符串或int)引用字典值的类型吗?编辑:在上面提到的链接中,提到了
PEP 484类型Dictstr,任何类型都是合适的,但是它太宽松了,因为可以使用任意字符串键,任意值都是有效的。
有人能解释一下arbitrary string keys
指的是什么吗?我知道键是字符串,但是当我们说arbitrary string keys
时,我们的意思是字典可以接受任何字符串吗?或者arbitrary
这个词在这里还有其他意义吗?
发布于 2020-05-05 21:13:04
是啊!通常python变量是可变的(类型可以更改),但是像这样指定它是很好的文档,并且非常清楚地说明了它的位置。
更多的使用文档可以在这里找到!https://docs.python.org/3/library/typing.html
编辑:详细说明最新问题的答案
您所引用的佩普文档标识了类型提示(尽管很有用)如何仍然容易出错。
通过指定Dict[str, Any]
,str
可以是"arbitrary
",这意味着它可以是任何东西的字符串键(即。name
,age
,height
,humidity
)。在这些键中,人们可能会认为"humidity
“不应该是这个dict
的字符串键之一,但是没有一种方法来检查或强制执行,直到在路上发生了一些错误(因此,它是”任意的“;没有规则来控制什么是”允许的“字符串-键这个dict
)。
因此,根据文档,指定这个类(从TypedDict
派生):
类电影(TypedDict):名称: str年份: int
将特别限制用户创建一种新类型的dict
( TypedDict
),其中包含字符串-键name
和year
(分别输入了str
和int
)。用户将无法“任意”添加新密钥(即。( humidity
)到这个"Movie
“TypedDict
,或者以其他方式将一个非int
值分配给Movie["year"]
。
https://stackoverflow.com/questions/61627708
复制相似问题