what's yield in python? please give me examples code | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 1

what's yield in python? please give me examples code

25th Dec 2018, 10:30 PM
kokito
6 Answers
+ 10
Return returns a concrete value while yield constructs a generator, which when called returns consecutive (in the iterative sense) values. Generators are cool because they don't create an instance of an iterator (like list or tuple, which when initiated, take up all needed memory) and so are memory-efficient. They can be understood as a scheme of returning values consecutively when called. However, because they do not create "instantiated" iterators, they for example cannot be indexed -- you cannot call its x-th element right away.
25th Dec 2018, 10:45 PM
Kuba Siekierzyński
Kuba Siekierzyński - avatar
+ 4
[meta, okay to ignore] A concrete way that I look at the generator/yield pattern is that I can pause an infinite algorithm like: sqrt(2), PI or the Fibonacci sequence--report what I know so far--then resume as if there was no interruption. In some languages (like Javascript) you can even change the generator's operation in the "algorithm is paused" time between the last yield and the next request. [very meta] SQL server query results are often returned using the generator...yield pattern because: "I don't want 1,000,000 rows back right now, I want 100 now, then another 100 in a minute..." (etc)
26th Dec 2018, 12:45 AM
Kirk Schafer
Kirk Schafer - avatar
+ 3
Yield defines a generator, a kind of a "multiple, iterative return" :) Refer to this lesson below: https://www.sololearn.com/learn/JUMP_LINK__&&__Python__&&__JUMP_LINK/2462/?ref=app
25th Dec 2018, 10:37 PM
Kuba Siekierzyński
Kuba Siekierzyński - avatar
+ 1
thank you
25th Dec 2018, 10:46 PM
kokito
+ 1
comparing yield and return statements: return: returns one single object and terminates the function call. yield: returns an iterator object, which is little similar to list, it can be used in for loops, but can not be indexed, to be able to index them you need to convert them to lists or tuples with list() or tuple() function. Yield doesn't terminate the function call.
27th Dec 2018, 6:21 PM
Seb TheS
Seb TheS - avatar
0
i see this post and dont understand. whats different return and yield?
25th Dec 2018, 10:38 PM
kokito