Sei que o Python na verdade não sobrecarrega funções, mas sim sugere vários tipos aceitáveis para argumentos de entrada/saída de método. Por si só, isso não permite a especificação de quais tipos de entrada geram quais tipos de retorno. Conseqüentemente, o uso do @overload
decorador para designar vários protótipos com sugestões de tipo aceitáveis. Esta é a minha síntese da leitura de várias páginas da web; portanto, se não estiver totalmente correto, obrigado por me corrigir.
O pacote PySpark possui um rdd.py
módulo contendo o seguinte protótipo de método:
@overload
def toDF(
self: "RDD[RowLike]",
schema: Optional[Union[List[str], Tuple[str, ...]]] = None,
sampleRatio: Optional[float] = None,
) -> "DataFrame":
...
Tentei encontrar informações sobre como interpretar arquivos Tuple[str, ...]
.
Esta página fala sobre dicas de tipo para argumentos de contêiner em geral, mas não o que reticências significam após um tipo concreto entre colchetes que sufixam um tipo de contêiner.
As reticências não gostam do contexto de fatiamento, que é outro uso que vi mencionado online.
A função das reticências difere da representação de um corpo autônomo, como pass
.
Como faço para interpretar Tuple[str, ...]
?
Neste contexto as reticências
...
são usadas para mostrar que a tupla pode ter um número arbitrário de elementos, incluindo zero. ou sejaTuple[str, ...]
significa que o parâmetro do esquema deve serTuple
onde cada elemento é do tipostr
e pode conter zero ou mais elementos.Olhando para o seu exemplo, ele está sendo usado para permitir flexibilidade no número de nomes de colunas que você pode fornecer no esquema.
consulte https://docs.python.org/3/library/typing.html