Thanks to visit codestin.com
Credit goes to www.tutorialspoint.com

Python yield Keyword



The Python, yield keyword is used to create a generator function. A type of function that is memory efficient and can be used like an iterator object. It is a case-sensitive keyword. In a function, it returns an expression or object

The yield statement of a function returns a generator object rather than just returning a value to the call of the function that contains the statement.

Syntax

Following is a syntax of the Python yield keyword −

def fun_name():
    statements
	yield expression 

Example

Following is a basic example of the Python yield keyword −

#defined generator
def fun1():
    yield "Hello"
    yield "Welcome"
    yield "To"
    yield "Tutorialspoint"
    
result_1 = fun1()
print(type(result_1))
#iterating through generator
for i in result_1:
    print(i)

Output

Following is the output of the above code −

<class 'generator'>
Hello
Welcome
To
Tutorialspoint

Using yield with tuple

The yield keyword returns a iterables like tuple, list, set etc..

Example

Here, we have created a generator named even which will return a even numbers in the form of tuple

def even(n):
    for i in range(n):
        if i%2==0:
            yield i
            
even_num = even(20)
print(tuple(even_num))

Output

Following is the output of the above code −

(0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

Difference between yield and return

In Python, return and yield are both used to send values from a function, but they operate differently. The return exits the function and sends back a single value or object, immediately terminating the function's execution. whereas the yield is used in a generator function to pause the function's execution and send back a value, allowing the function to resume where it left off the next time it's called. This makes yield ideal for generating a sequence of values over time, while return is used for a single result or when the function needs to end.

Example

Here, we have defined both function and generator. The function return the a single value whereas, the generator returned a list of element −

#defined a function
def power(n):
    return n**2
#defined a generator    
def power_1(n):
    for i in range(n):
        yield i**2
		
result_1 = power(4)
result_2 = (list(power_1(4)))
print("Return :", result_1)
print("Yield :", result_2)

Output

Following is the output of the above code −

Return : 16
Yield : [0, 1, 4, 9]
python_keywords.htm
Advertisements