Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
next(gen), а не gen.next(). Дело в том, что в Python 3 заметили и устранили нестандартность метода .next: этот метод «магический» (точнее, управляет поведением встроенных возможностей языка) аналогично прочим вроде .__iter__, .__gt__; но при этом в Python 2 он пишется без обрамляющих __. В Python 3 метода next у итераторов нет, вместо него используется __next__. Таким образом,In [92]: gen = (x for x in range(0, 100*10000))
In [93]: gen.next()
In [92]: gen = (x for x in range(0, 100*10000))
In [93]: gen.__next__()
next(gen) будет работать везде.def match(pattern):
print('Looking for ' + pattern)
try:
while True:
s = (yield)
if pattern in s:
print(s)
except GeneratorExit:
print("=== Done ===")
Сопрограммы в Python