Yield is a keyword in Python that is used to create generator functions. A generator function is a special type of function that returns an iterator. When a function is called with the yield keyword, it returns a generator object that can be used to iterate over the function’s results.

The main difference between yield and return is that yield suspends the execution of the function and returns a value, while return terminates the execution of the function and returns a value.

How does Yield Work in Python?

When a function is called with the yield keyword, it returns a generator object that can be used to iterate over the function’s results. The function can be resumed from where it left off, allowing it to return multiple values without terminating the function’s execution.

Here is an example of a generator function in Python:

				
					def generator_function():
    yield 1
    yield 2
    yield 3

gen = generator_function()
print(next(gen))
print(next(gen))
print(next(gen))

				
			

In this example, the generator function generator_function returns a generator object gen that can be used to iterate over the function’s results. When the next function is called on the generator object, the function is resumed from where it left off and returns the next value.

What is Return in Python?

Return is a keyword in Python that is used to return a value from a function. When a function is called with the return keyword, it terminates the execution of the function and returns the specified value.

Here is an example of a function in Python that uses the return keyword:

				
					def return_function():
    return 1

result = return_function()
print(result)

				
			

In this example, the function return_function returns the value 1 when it is called. The value is then stored in the variable result and can be used later in the program.

Yield vs Return: Key Differences

  • Memory Usage: As mentioned above, generators are memory-efficient, while lists and arrays that store values in memory can consume a significant amount of memory.
  • Iteration: Generators can be iterated over one value at a time, while lists and arrays can be iterated over all at once.
  • Function Termination: yield statements do not terminate the function, while return statements do. A generator function can have multiple yield statements and can be called multiple times to generate more values, while a function that uses return can only be called once and terminates when the return statement is executed.
  • Value Returned: A yield statement returns a value to the caller, but the function does not terminate. A return statement returns a value to the caller and terminates the function.

Use Cases of Yield and Return in Python

Yield

  • Iterators: As mentioned above, yield is used to create generators, which can be iterated over one value at a time.
  • Lazy Evaluation: Generators are useful for performing lazy evaluation, where values are only generated as they are needed.
  • Memory Efficiency: Generators are memory-efficient and can save a significant amount of memory compared to lists or arrays.

Return

  • Function Termination: Return is used to end the function and return a value to the caller.
  • Returning Results: Return statements are used to return the results of a function back to the caller.
  • Error Handling: Return statements can be used to return an error code or message if an error occurs during the execution of a function.

Wrap up

Yield and return are two important concepts in Python that every programmer should understand. Yield is used to create generator functions that can be used to iterate over the function’s results, while return is used to return a single value from a function and terminates its execution.

Both yield and return have their own unique uses and it’s important to understand the differences between the two in order to write effective and efficient code in Python. With this knowledge, you should now have a good understanding of yield vs return in Python and be able to write effective and efficient code. 


Thanks for reading. Happy coding!