Python | yield Keyword - GeeksforGeeks

27 May, 2021
Yield is a keyword in Python that is used to return from a function without destroying the states of its local variable and when the function is called, the execution starts from the last yield statement. Any function that contains a yield keyword is termed a generator. Hence, yield is what makes a generator. The yield keyword in Python is less known off but has a greater utility which one can think of. 
Code #1 : Demonstrating yield working 
Python3
# Python3 code to demonstrate# yield keyword # generator to print even numbersdef print_even(test_list) :    for i in test_list:        if i % 2 == 0:            yield i # initializing listtest_list = [1, 4, 5, 6, 7] # printing initial listprint ("The original list is : " +  str(test_list)) # printing even numbersprint ("The even numbers in list are : ", end = " ")for j in print_even(test_list):    print (j, end = " ")
Output :  
The original list is : [1, 4, 5, 6, 7]
The even numbers in list are :  4 6 
  Code #2:  
Python3
# A Python program to generate squares from 1# to 100 using yield and therefore generator # An infinite generator function that prints# next square number. It starts with 1def nextSquare():    i = 1     # An Infinite loop to generate squares    while True:        yield i*i                        i += 1 # Next execution resumes                # from this point     # Driver codefor num in nextSquare():    if num > 100:        break       print(num)
Output:  
1
4
9
16
25
36
49
64
81
100
Advantages of yield: 
Since it stores the local variable states, hence overhead of memory allocation is controlled.
Since the old state is retained, the flow doesn’t start from the beginning and hence saves time.
Disadvantages of yield: 
Sometimes, the use of yield becomes erroneous if the calling of function is not handled properly.
Time and memory optimization has a cost of complexity of code and hence sometimes hard to understand the logic behind it.
Practical Applications: The possible practical application is that when handling the last amount of data and searching particulars from it, yield can be used as we don’t need to look up again from start and hence would save time. There can possibly be many applications of yield depending upon the use cases.   
Python3
# Python3 code to demonstrate yield keyword # Checking number of occurrence of# geeks in string # generator to print even numbersdef print_even(test_string) :    for i in test_string:        if i == "geeks":            yield i # initializing stringtest_string = " The are many geeks around you, \              geeks are known for teaching other geeks" # printing even numbers using yieldcount = 0print ("The number of geeks in string is : ", end = "" )test_string = test_string.split() for j in print_even(test_string):    count = count + 1 print (count)
Output :  
The number of geeks in string is : 3
 
shivach31
Python-Functions
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Read a file line by line in Python
How to Install PIP on Windows ?
Different ways to create Pandas Dataframe
Python String | replace()
Create a Pandas DataFrame from Lists
Python program to convert a list to string
Reading and Writing to text files in Python
*args and **kwargs in Python
How To Convert Python Dictionary To JSON?