How to understand the function repeater2 and repeater3?
def repeater1(value):
    new = (yield value)
def repeater2(value):
    while True:
        new = (yield value)
def repeater3(value):
    while True:
        new = (yield value)
        if new is not None:value = new
r1,r2,r3 = repeater1(1),repeater2(2),repeater3(3)
r1.next() #1
r2.next() #2
r3.next() #3
r1.send(4) #StopIteration 
r2.send(4) #2
r2.next() #2
r3.send(4) #4
r3.next() #4
 
     
    