170 похожих чатов

24 ответов

23 просмотра

Речь не о лучше или хуже

Лучше отсутствием необходимости писать реализацию __iter__ и самого итератора вручную. Ну а __next__ уже в автоматически созданном итераторе сам будет.

next и iter это про итератор,а не про итерейбл

Максим-Василькин Автор вопроса
quantum super position
next и iter это про итератор,а не про итерейбл

Получается, бывает итерейбл без итератора...?

Максим Василькин
Получается, бывает итерейбл без итератора...?

Iterable — значит от объекта можно получить итератор.

Максим-Василькин Автор вопроса
evle
Iterable — значит от объекта можно получить итерат...

Во, спасибо, полегчало. То есть, объект с getitem - он iterable, потому как возвращает "старый" вариант итератора?

quantum super position
Итерейбл это наличие __iter__

Ну типа да, но наличие __getitem__ порождает вызов "неявного" __iter__ и это тоже сойдёт за итерабль.

evle
Пуркуа бы и не па.

А еще можно "заменить" __contains__ на __getitem__

Максим Василькин
Во, спасибо, полегчало. То есть, объект с getitem ...

Ну, не "старый вариант итератора", просто он неявно получается. Итератор вполне обычный.

Максим-Василькин Автор вопроса
evle
Ну, не "старый вариант итератора", просто он неявн...

Клёво! Всё, спасибо. Понял. Да, явное лучше, чем неявное. Ещё вопрос: Хочу свои iterable object. Не знаю, дом с жильцами, колода карт, сотрудники магазина. Я всё это делал на основе списков, туплов, генераторов и т.д. То есть, на основе имеющегося. Это оно так и делается? Или надо в более низкоуровневые дебри вдаваться?

Максим Василькин
Клёво! Всё, спасибо. Понял. Да, явное лучше, чем н...

как удобнее, так и делай. Можно вообще в __iter__ написать return iter(self.my_list) и готово :D

Максим Василькин
Клёво! Всё, спасибо. Понял. Да, явное лучше, чем н...

It depends. Если итерабля представляет собой объект в памяти, вероятно есть смысл строить её поверх встроеннй структуры. Банально потому что 1) они побыстрее работают, потому что на сях и 2) выбор особо не велик. Но если отвлечься от того, что явным образом напоминает последовательность, например какое-нибудь дерево, которое надо обходить — и у нас появляется уже не одна структура, а несколько, а если мы последовательно скачиваем какие-нибудь файлы, причём динамически, то там в итераторе уже и всякие http-запросы появятся.

Максим-Василькин Автор вопроса
Denis Pobedrya
как удобнее, так и делай. Можно вообще в __iter__ ...

А то я порываюсь свой "список" с нуля создать

Максим-Василькин Автор вопроса
evle
It depends. Если итерабля представляет собой объек...

Принято, спасибо. Не, у меня пока проще, без деревьев и запросов)

Kirill Shikhalev
А в питон уже добавили async for?

Внезапность вопроса ставит меня в тупик. :-)

Kirill Shikhalev
А в питон уже добавили async for?

А f-строки уже пробовал? Прикольная фича.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта