#############################################
# Yield returns a generator object
# use next() to access the return value
# If you attempt to invoke next() on a generator object that had already produced (yielded) all its values, it will throw StopIteration exception
# We can pass data to a generator function using the send() method defined
# Use generators to generate values and coroutines to consume values. Generator functions receive values are called coroutines.
# Yield returns a generator object
# use next() to access the return value
# If you attempt to invoke next() on a generator object that had already produced (yielded) all its values, it will throw StopIteration exception
# We can pass data to a generator function using the send() method defined
# Use generators to generate values and coroutines to consume values. Generator functions receive values are called coroutines.
#############################################
############# Test1 (send & receive) ############
def test_yield_send():
while True:
item = yield
print(f'Received item: {item}')
if __name__ == '__main__':
gen = test_yield_send()
print(gen) #<generator object test_yield at 0x7ff2f0510c80>
next(gen)
gen.send(100)
Output:
############ Test2 (send & receive) ############
def generate_num():
i = 0
while True:
i += 1
t = (yield i)
print(t)
if __name__ == "__main__":
gen = generate_num()
item = gen.send(None)
print("First received " + str(item))
for i in range(0, 5):
item = gen.send(100 + i)
print("Other received " + str(item))
Output:
First received 1
100
Other received 2
101
Other received 3
102
Other received 4
103
Other received 5
104
Other received 6
############# Test1 (send & receive) ############
def test_yield_send():
while True:
item = yield
print(f'Received item: {item}')
if __name__ == '__main__':
gen = test_yield_send()
print(gen) #<generator object test_yield at 0x7ff2f0510c80>
next(gen)
gen.send(100)
Output:
<generator object test_yield_send at 0x7ff700b45c80>
Received item: 100
############ Test2 (send & receive) ############
def generate_num():
i = 0
while True:
i += 1
t = (yield i)
print(t)
if __name__ == "__main__":
gen = generate_num()
item = gen.send(None)
print("First received " + str(item))
for i in range(0, 5):
item = gen.send(100 + i)
print("Other received " + str(item))
Output:
First received 1
100
Other received 2
101
Other received 3
102
Other received 4
103
Other received 5
104
Other received 6
No comments:
Post a Comment