У меня есть функция в Python, которая может возвращать bool
или list
. Есть ли способ указать типы возврата, используя подсказки типа.
Например, это правильный способ сделать это?
def foo(id) -> list or bool:
...
python
python-3.x
return-type
type-hinting
python-3.5
Яхья Уддин
источник
источник
Ответы:
Из документации
Следовательно, правильный способ представления более одного возвращаемого типа данных
Но учтите, что печатать не нужно. Python продолжает оставаться языком с динамической типизацией. Синтаксис аннотации был разработан, чтобы помочь во время разработки кода до его выпуска в производство. Как говорится в PEP 484, «проверка типов во время выполнения не происходит».
Как видите, я передаю значение типа int и возвращаю str. Тем не менее,
__annotations__
будут установлены соответствующие значения.Пожалуйста, пройдите PEP 483 для получения дополнительной информации о подсказках типа. Также см. Что такое подсказки типа в Python 3.5 ?
Пожалуйста, обратите внимание, что это доступно только для Python 3.5 и выше. Это четко указано в PEP 484 .
источник
Утверждение
def foo(client_id: str) -> list or bool:
при оценке эквивалентноdef foo(client_id: str) -> list:
и поэтому не будет делать то, что вы хотите.Родной способ описать подсказку типа «А или В» - это Union (спасибо Бхаргаву Рао):
Я не хочу быть парнем, «почему вы хотите делать это в любом случае», но, возможно, иметь 2 типа возврата не то, что вы хотите:
Если вы хотите вернуть bool для указания какого-либо особого случая ошибки, рассмотрите возможность использования исключений. Если вы хотите вернуть bool как какое-то специальное значение, возможно, пустой список будет хорошим представлением. Вы также можете указать, что
None
может быть возвращено сOptional[list]
источник
Если кто-то приземлился здесь в поисках «как указать типы множественных возвращаемых значений?», Используйте
Tuple[type_value1, ..., type_valueN]
Больше информации: https://code-examples.net/en/q/2651e60
источник