Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

+1 098новых вакансий за сутки·92 474вакансии открыты сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 208
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 410 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 175
  • Облачные технологии14 160
  • QA вакансии3 451
  • Backend вакансии2 059
  • Инженер данных1 800
  • Продакт-менеджер1 247

Разработка

  • Android1 854
  • iOS1 694
  • Fullstack вакансии983
  • AI вакансии945
  • Frontend вакансии737
  • Mobile вакансии43

По стеку

  • Go8 754
  • Java6 595
  • Node.js2 038
  • .NET1 738
  • Kotlin1 617
  • Rust1 473
  • C#718
  • PHP692
  • C++582

DevOps и инфраструктура

  • Kubernetes7 778
  • DevOps вакансии6 088
  • Linux-инфраструктура5 502
  • Terraform / IaC4 276
  • CI/CD3 275
  • Мониторинг и Observability1 793
  • SRE563
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 141
  • Бизнес-аналитик921
  • Аналитик данных860
  • Системный аналитик154

Другие направления

  • Проджект-менеджер621
  • UI/UX дизайн148
  • Ручное тестирование14

По регионам

  • Вакансии в США42 682
  • Вакансии в Европе23 611
  • Вакансии в Канаде4 365
  • Работа в России3 838

По формату

  • Удалённые вакансии72 518
  • Релокация в США42 681
  • Гибридная работа12 458
  • Офисная работа7 066

По уровню

  • Senior вакансии42 247
  • Middle вакансии20 971
  • Junior вакансии6 706

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме PythonВсе вопросы
PythonJuniorLive-кодинг

Что такое __iter__ и __next__?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

__iter__(self) возвращает iterator (часто self, если объект — сам iterator). __next__(self) возвращает следующий элемент или поднимает StopIteration. Это iterator protocol, на котором работают for, list(), sum(), zip, enumerate.

Контракт iterator protocol

class MyIterator:
    def __iter__(self):
        return self                  # iterator возвращает себя

    def __next__(self):
        if no_more_items:
            raise StopIteration       # сигнал конца — обязателен
        return next_item

Два главных потребителя — встроенные функции iter(obj) и next(it[, default]). for внутри использует именно их.

Минимальный пример

class CountDown:
    def __init__(self, start):
        self.current = start

    def __iter__(self):
        return self

    def __next__(self):
        if self.current <= 0:
            raise StopIteration
        value = self.current
        self.current -= 1
        return value

print(list(CountDown(3)))    # [3, 2, 1]

# Можно использовать и через next() с дефолтом
it = CountDown(2)
print(next(it))              # 2
print(next(it))              # 1
print(next(it, None))        # None — нет StopIteration наружу

Раздельный iterable и iterator

Если хочется многократного прохода, отделите коллекцию от итератора:

class Range:
    def __init__(self, n):
        self.n = n

    def __iter__(self):
        return RangeIterator(self.n)

class RangeIterator:
    def __init__(self, n):
        self.i = 0
        self.n = n
    def __iter__(self):
        return self
    def __next__(self):
        if self.i >= self.n:
            raise StopIteration
        v = self.i
        self.i += 1
        return v

r = Range(3)
print(list(r), list(r))      # [0, 1, 2] [0, 1, 2]

Sentinel-форма iter()

Малоизвестная фишка: iter(callable, sentinel) вызывает callable до тех пор, пока не вернётся sentinel.

import sys
# Читаем stdin по строке до пустой
for line in iter(sys.stdin.readline, ""):
    print(line, end="")

__iter__ только с __getitem__

Старый sequence-protocol: если у класса есть __getitem__(0), __getitem__(1), ... до IndexError, объект всё равно итерируется. __iter__ в этом случае необязателен, но рекомендован.

Подводные камни

  • Забыли raise StopIteration — for зациклится.
  • __next__ вернул None вместо StopIteration — конец потока не распознан, for выдаст None и продолжит.
  • __iter__ возвращает не итератор, а сам объект, у которого нет __next__ — TypeError: iter() returned non-iterator.
  • Iterator с __iter__, возвращающим новый iterator каждый раз, теряет состояние.
  • В Python 3.7+ исключение StopIteration, поднятое внутри generator function, превращается в RuntimeError (PEP 479).
  • Стандарт: __next__ в Python 3 (раньше был next() в Python 2 без подчёркиваний).

Частые вопросы на собеседовании

  • Что такое truthy и falsy значения в Python?
  • Когда использовать threading?
  • Что такое type hints и зачем они нужны?
  • Как работает yield?

Типичные ошибки

  • Не знать, кто вызывает next.
  • Забывать raise StopIteration.
  • Возвращать новый iterator из next.

Что проверяет интервьюер

  • Может реализовать простой iterator.
  • Объясняет StopIteration.
  • Понимает отличие коллекции от состояния прохода.

Как вы знаете этот вопрос?

Проверить себя по теме Python →

Источники

  • https://docs.python.org/3/reference/datamodel.html
  • https://docs.python.org/3/library/stdtypes.html
←Предыдущий вопросЧто такое *args и **kwargs? Как работает распаковка аргументов при вызове функции?Следующий вопрос→Что такое ASGI?

Связанные темы

PythonIterationProtocols

Вакансии с этим навыком

Python вакансии
  • Internship - Machine Learning and image-based EUV system setup
  • Internship-Optical Modeling and Simulation Engineering
  • Engineering Manager, Copilot
  • Test Engineer - Electric Propulsion, Satellites (Starlink)
  • Ingeniero de Machine Learning & Modelado