Ах, я понял, о чем ты спрашиваешь.Вы спрашиваете:
Почему я все еще получаю генератор, даже если я не нажимаю ключевое слово yield
в get_data()
?
Дело в том, чтофункция, которая содержит хотя бы один оператор yield
, является генератором.Итак, ваша get_data()
функция является генератором .Из-за этого вы всегда получаете объект генератора из get_data()
.
Значение return
в генераторе немного отличается от обычной функции.В генераторе любое выражение return x
эквивалентно raise StopIteration(x)
.
А когда вы закомментируете деталь с помощью else
, вы закомментируете оператор yield
, поэтому get_data()
становится обычной функцией.Поэтому он возвращает list
, как вы ожидаете.
Связанные SO сообщение: Возврат и доходность в той же функции