Mam w Pythonie funkcję, która może zwrócić a bool
lub a list
. Czy istnieje sposób na określenie typów zwrotów za pomocą podpowiedzi typu.
Na przykład, czy jest to właściwy sposób, aby to zrobić?
def foo(id) -> list or bool:
...
python
python-3.x
return-type
type-hinting
python-3.5
Yahya Uddin
źródło
źródło
Odpowiedzi:
Z dokumentacji
Dlatego właściwym sposobem reprezentowania więcej niż jednego zwracanego typu danych jest
Pamiętaj jednak, że pisanie nie jest wymuszone. Python nadal pozostaje językiem o dynamicznym pisaniu. Składnia adnotacji została opracowana, aby pomóc podczas opracowywania kodu przed udostępnieniem go do produkcji. Jak stwierdza PEP 484, „sprawdzanie typu nie zachodzi w czasie wykonywania”.
Jak widać, przekazuję wartość int i zwracam str. Jednak
__annotations__
zostaną ustawione na odpowiednie wartości.Proszę przejrzeć PEP 483, aby uzyskać więcej informacji na temat podpowiedzi typu. Zobacz także Co to są wskazówki dotyczące typów w Python 3.5 ?
Należy pamiętać, że jest to dostępne tylko dla języka Python 3.5 i nowszych wersji. Jest to wyraźnie wspomniane w PEP 484 .
źródło
Oświadczenie
def foo(client_id: str) -> list or bool:
po ocenie jest równoważnedef foo(client_id: str) -> list:
i dlatego nie zrobi tego, co chcesz.Rodzimym sposobem opisu wskazówki typu „A lub B” jest Union (dzięki Bhargav Rao):
Nie chcę być facetem „Dlaczego i tak to robić”, ale być może 2 typy zwrotów nie są tym, czego chcesz:
Jeśli chcesz zwrócić wartość bool wskazującą na jakiś szczególny przypadek błędu, rozważ użycie wyjątków. Jeśli chcesz zwrócić wartość bool jako jakąś specjalną wartość, być może pusta lista byłaby dobrą reprezentacją. Możesz również wskazać, że
None
można go zwrócićOptional[list]
źródło
Jeśli ktoś wylądował tutaj w poszukiwaniu „jak określić typy wielu zwracanych wartości?”, Użyj
Tuple[type_value1, ..., type_valueN]
Więcej informacji: https://code-examples.net/en/q/2651e60
źródło