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

+1 110новых вакансий за сутки·79 243вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python14 632
  • Облачные технологии11 077
  • QA вакансии3 282
  • Backend вакансии1 769
  • Инженер данных1 379
  • Продакт-менеджер819

Разработка

  • Android1 707
  • iOS1 580
  • AI вакансии842
  • Fullstack вакансии716
  • Frontend вакансии610
  • Mobile вакансии30

По стеку

  • Go8 031
  • Java5 182
  • Node.js1 640
  • Kotlin1 395
  • Rust1 333
  • .NET1 254
  • PHP541
  • C++384
  • C#353

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

  • Kubernetes6 326
  • Linux-инфраструктура4 784
  • DevOps вакансии4 584
  • Terraform / IaC3 487
  • Мониторинг и Observability1 598
  • CI/CD1 478
  • SRE494
  • Кибербезопасность242

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

  • Data Scientist759
  • Аналитик данных739
  • Бизнес-аналитик680
  • Системный аналитик92

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

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

По регионам

  • Вакансии в США37 518
  • Вакансии в Европе16 020
  • Работа в России3 879
  • Вакансии в Канаде3 642

По формату

  • Удалённые вакансии59 708
  • Релокация в США37 518
  • Гибридная работа9 274
  • Офисная работа6 545

По уровню

  • Senior вакансии35 219
  • Middle вакансии16 676
  • Junior вакансии5 719

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

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • 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 вакансии
  • Data Analyst (B2B Commercial Analytics)
  • Advanced SQL & Excel Analyst
  • Salesforce Effectiveness Analyst with Japanese Language
  • Machine Learning Researcher
  • Test Engineering Intern