Let it be

Saturday, September 03, 2022

Python 奇異功能 : yield     (P.S. prefer to use Pycharm IDE)

What is yield in Python ?     

yield  is a special keyword. Especially, for a new term : generator

When we use yield in def function, we call this function is a generator function.

Specially, when a generator function is being called, it will run right away, but just keep in mind.

Only later program use it, i.e. for i in generator function, or next, or send

Sample code  01 here :

def foo():
    print("starting...")
    while True:
        res = yield 4
        print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(g.send(7))
1. When print(next(g)), sub foo() will stop at : res = yield 4, and then back
   to main program : print("*"*20), and execute next line: print(g.send(7)),
   now return to sub foo(), Python will remember last time "yield" statement,
   execute next line : print("res", res)
Sample code 02 here: easily to create old number list

def filter_odd(numbers):

   for number in range(numbers):

       if(number%2!=0):

           yield number 

odd_numbers = filter_odd(20)

print(list(odd_numbers))

Sample 03: When generator encounter "next", the program will return to main program but remember yield nest line statement (P.S. this is a very special feature)

def filter_odd(numbers):

   for number in range(numbers):

       if(number%2!=0):

           yield number

odd_numbers = filter_odd(20)

print(next(odd_numbers))

print(next(odd_numbers))

print(next(odd_numbers))

print(next(odd_numbers))

print(next(odd_numbers))

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]



<< Home