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 listdef 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