Eu tenho uma função em python que pode retornar um bool
ou um list
. Existe uma maneira de especificar os tipos de retorno usando dicas de tipo.
Por exemplo, esta é a maneira correta de fazer isso?
def foo(id) -> list or bool:
...
python
python-3.x
return-type
type-hinting
python-3.5
Yahya Uddin
fonte
fonte
Respostas:
A partir da documentação
Portanto, a maneira correta de representar mais de um tipo de dados de retorno é
Mas observe que a digitação não é imposta. O Python continua sendo uma linguagem de tipo dinâmico. A sintaxe da anotação foi desenvolvida para ajudar durante o desenvolvimento do código antes de ser liberado na produção. Como afirma o PEP 484, "nenhuma verificação de tipo acontece em tempo de execução".
Como você pode ver, estou passando um valor int e retornando um str. No entanto, o valor
__annotations__
será definido para os respectivos valores.Consulte o PEP 483 para obter mais informações sobre dicas de tipo. Consulte também O que são dicas de tipo no Python 3.5 ?
Observe que isso está disponível apenas para Python 3.5 e superior. Isso é mencionado claramente no PEP 484 .
fonte
A declaração,
def foo(client_id: str) -> list or bool:
quando avaliada, é equivalentedef foo(client_id: str) -> list:
e, portanto, não fará o que você deseja.A maneira nativa de descrever uma dica do tipo "A ou B" é Union (graças a Bhargav Rao):
Eu não quero ser o cara "Por que você quer fazer isso de qualquer maneira", mas talvez ter dois tipos de retorno não seja o que você deseja:
Se você deseja retornar um bool para indicar algum tipo de caso de erro especial, considere usar exceções. Se você deseja retornar um bool como algum valor especial, talvez uma lista vazia seja uma boa representação. Você também pode indicar que
None
pode ser retornado comOptional[list]
fonte
Caso alguém tenha chegado aqui em busca de "como especificar tipos de vários valores de retorno?", Use
Tuple[type_value1, ..., type_valueN]
Mais informações: https://code-examples.net/en/q/2651e60
fonte