def assign_match(regex, string):
    match = re.match(regex, string)
if match is None:
    raise StopIteration
else:
    yield match.groups()
for a in assign_match('(abc)(def)', 'abcdef'):
    pass
Использование диспетчера контекста для управления потоком