Найти - Пользователи
Полная версия: разница next() vs yield
Начало » Python для новичков » разница next() vs yield
1
qwer
возник вопрос по созданию итератора __iter__ по атрибуту-списку объекта.
в документации пишут что нужно возвращать объект-итератор.
но проверил с простым циклом и yield в теле __iter__ - так тоже работает.
непонятно только как с потокобезопасностью в этом случае - когда __iter__ вызывается для одного объекта из разных мест программы - внутреннее окружение __iter__ создается каждый раз другое или используется одно и то же ?
Андрей Светлов
потокобезопасность прийдется обеспечивать самому, если уж нужно - в любом случае.
dict ругнется на модификацию во время итерации, list просто может “сбиться” и выдать неожиданный результат.
Кстати, простейший итератор для списка получается через iter(lst).
Есть еще выражения-генераторы: (i for i in lst).
Оба варианта побыстрее цикла с yield.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB