How to fix “SyntaxError: ‘return’ outside function” in Python
Python raises the error “SyntaxError: ‘return’ outside function” once it encounters a
return statement outside a function.
Here’s what the error looks like:
File /dwd/sandbox/test.py, line 4 return True ^^^^^^^^^^^ SyntaxError: 'return' outside function
Based on Python's syntax & semantics, a return statement may only be used in a function to return a value to the caller.
However, if - for some reason - a
return statement isn't nested in a function, Python's interpreter raises the "SyntaxError: 'return' outside function" error.
return statement outside a function isn't something you'd do on purpose, though; This error usually happens when the indentation-level of a
return statement isn't consistent with the rest of the function.
Additionally, it can occur when you accidentally use a
return statement to break out of a loop (rather than using the
How to fix the "'return' outside function" error?
This syntax error happens under various scenarios including:
Let's explore each scenario with some examples.
Inconsistent indentation: A common cause of this syntax error is an inconsistent indentation, meaning Python doesn't consider the
return statement a part of a function because its indentation level is different.
In the following example, we have a function that accepts a number and checks if it's an even number:
# 🚫 SyntaxError: 'return' outside function def isEven(value): remainder = value % 2 # if the remainder of the division is zero, it's even return remainder == 0
As you probably noticed, we hadn't indented the return statement relative to the
To fix it, we correct the indentation like so:
# ✅ Correct def isEven(value): remainder = value % 2 # if the remainder of the division is zero, it's even return remainder == 0
Let's see another example:
# 🚫 SyntaxError: 'return' outside function def check_age(age): print('checking the rating...') # if the user is under 12, don't play the movie if (age < 12): print('The movie can\'t be played!') return
In the above code, the
if block has the same indentation level as the top-level code. As a result, the
return statement is considered outside the function.
To fix the error, we bring the whole
if block to the same indentation level as the function.
# ✅ Correct def check_age(age): print('checking the rating...') # if the user is under 12, don't play the movie if (age < 12): print('The movie can\'t be played!') return print('Playing the movie') check_age(25) # output: Playing the movie
Using the return statement to break out of a loop: Another reason for this error is using a
return statement to stop a
for loop located in the top-level code.
The following code is supposed to print the first fifteen items of a range object:
# 🚫 SyntaxError: 'return' outside function items = range(1, 100) # print the first 15 items for i in items: if i > 15: return print(i)
However, based on Python's semantics, the
return statement isn't used to break out of functions - You should use the
break statement instead:
# ✅ Correct items = range(1, 100) # print the first 15 items for i in items: if i > 15: break print(i)
In conclusion, always make sure the
return statement is indented relative to its surrounding function. Or if you're using it to break out of a loop, replace it with a
Alright, I think it does it. I hope this quick guide helped you solve your problem.
Thanks for reading.
If you read this far, you can tweet to the author to show them you care. Tweet a Thanks
Never miss a guide like this!
Join the DWD mailing list for your weekly dose of knowledge! This mailing list is for doers and thinkers. If you're a curious person, you might find it useful, just as 2,000 other devs do!
Disclaimer: This post may contain affiliate links. I might receive a commission if a purchase is made. However, it doesn’t change the cost you’ll pay.