和:
def func(self, stuff: [str]) -> str:
两个语句有效吗?他们是否将相同的信息给予Python(3.12+)解释器?
这个问题是相关的,但没有回答我关于titerable关键字的具体问题。
首先,这些是
型提示。解释器不适合使用它们或以其他方式使用。它们仅出于方便编码和静态分析而存在。例如。如果您使用IDE,它可能会使用它们为实体成员建议完成。
现在是[str]
的速记。 list[str]
更具体地说,Iterable
是
list
功能方面的衍生物(由于python的
duck键入,它不必从中正式继承,它只是实现了相同的成员),因此具有所有成员在
Iterable
中,还有许多其他不在
Iterable
的成员。 因此,实际结果是您的IDE将建议来自相应类型的成员,因为完成工具可以完成,例如验证您仅使用代码中声明类型中存在的成员。