我意识到 Python 实际上并没有重载函数,而是暗示了方法输入/输出参数的多种可接受的类型。就其本身而言,这不允许指定哪些输入类型产生哪些返回类型。因此,使用@overload
装饰器来指定多个可接受的类型提示原型。这是我阅读多个网页的综合,如果不完全正确,谢谢纠正。
PySpark 包有一个rdd.py
包含以下方法原型的模块:
@overload
def toDF(
self: "RDD[RowLike]",
schema: Optional[Union[List[str], Tuple[str, ...]]] = None,
sampleRatio: Optional[float] = None,
) -> "DataFrame":
...
我试图找到有关如何解释的信息Tuple[str, ...]
。
本页讨论一般容器参数的类型提示,但不讨论在作为容器类型后缀的方括号内的具体类型后面的省略号的含义。
省略号不喜欢它在切片的上下文中,这是我在网上看到的另一个用途。
省略号的作用不同于表示无操作主体,例如pass
。
我该如何解读Tuple[str, ...]
?
在这种情况下,省略号
...
用于表明元组可以具有任意数量的元素,包括零。IETuple[str, ...]
意味着模式参数应该是 a,Tuple
其中每个元素的类型为str
,并且它可以包含零个或多个元素。查看您的示例,它用于允许您在架构中提供的列名数量的灵活性。
请参阅https://docs.python.org/3/library/typing.html