Home >Backend Development >Python Tutorial >Why Does My Recursive Python Function Return `None` Sometimes?
Understanding Recursion and Why It Returns None
When a function calls itself, it is known as recursion. This can be a powerful technique, but it's crucial to understand the concept of return values to prevent encountering unexpected results.
In the given Python code:
def get_input(): my_var = input('Enter "a" or "b": ') if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') get_input() else: return my_var print('got input:', get_input())
If the user inputs "a" or "b", the function works as intended and returns the input. However, an issue arises when the user inputs an invalid character and then a valid input. The problem stems from the recursive call in the if condition.
When my_var is not "a" or "b", the function correctly prompts the user to try again. However, the recursive call to get_input() lacks a return statement for the recursive function's return value. Without a proper return, Python implicitly returns None when the function falls off the end.
To fix this, the recursive call should be modified to return the result of the recursive function:
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
With this change, the function will correctly return my_var after the user provides a valid input, preventing the return of None.
The above is the detailed content of Why Does My Recursive Python Function Return `None` Sometimes?. For more information, please follow other related articles on the PHP Chinese website!