0

Next() function.

def numbers(x): for i in range(x): if i%2==0: yield i value=numbers(11) print(next(value)) print(next(value)) print(next(value)) print(next(value)) print(next(value)) >this program gives output as 0,2,4,6,8,10 but , def numbers(x): for i in range(x): if i%2==0: yield i print(next(numbers(11)) print(next(numbers(11)) print(next(numbers(11)) print(next(numbers(11)) print(next(numbers(11)) print(next(numbers(11)) >this program always give output 0 ..why??

22nd May 2021, 7:26 PM
kushal
2 Réponses
+ 1
In 2nd program , you are calling the next function only once on each function unlike the first one that has multiple next call on same function .
22nd May 2021, 7:40 PM
Abhay
Abhay - avatar
0
your function define/return a generator (because use of 'yield' keyword inside)... then you must store it in a variable and call next(generator) to get each values returned by 'yield' statement(s) ^^ in the second case, you build a new generator at each next call, so you only get the first value returned by 'yield' at each call ;P
22nd May 2021, 9:01 PM
visph
visph - avatar