Вопрос №55742 от пользователя Ivan Dedenev в испытании «Слияние очередей»

Ivan Dedenev

Мне кажется, что в условии задачи допущена неточность. Сказано: "Функция должна принимать произвольное количество аргументов-итераторов..." Т.е. гарантируется, что аргументы будут именно итераторами. При этом ожидается корректное прохождение теста, в котором в качестве аргумента передается range-объект, который итератором не является, так как для него невозможно осуществить вызов next(range_obj)

Пример, в котором эта проблема была обнаружена: https://ru.hexlet.io/code_reviews/421042

1 0

Aleksei Pirogov

В общем случае полагаться на то, что итераторы уже будут запущены, не следует. Стоит всегда делать iter() - итератор просто вернёт себя, iterable вернёт новый итератор. Так что код, который сразу делает next() будет считаться не слишком идиоматичным. Я уж молчу про то, что писать код с явными вызовами next() и отловом StopIteration там, где без них можно обойтись, не стоит :)

Кроме того, в источниках вы часто будете встречать ситуации, когда авторы используют iterable и iterator взаимозаменяемо, так уж сложилось исторически. Но так как большинство разработчиков либо явно вызывает iter() перед тем как работать с любым источником, либо вообще не работает с протоколом итерации (iter()+next()) напрямую, то такие неточности в формулировках большого вреда не наносят.

P.S. Описание я поправлю, чтобы у других вопросов не возникало, так что спасибо вам за наводку!

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев