![]()
SyntaxError: ‘return’ outside function – Step-by-Step Explanation
Introduction
The error “SyntaxError: ‘return’ outside function” occurs when the return statement is used outside of a function. Since return is meant to send a value back from a function, Python raises this error when it finds return in an invalid place.
This guide will explain the causes of this error and provide step-by-step solutions to fix it.
1. Understanding the Error
The return statement is used to return a value from a function to its caller. It must be inside a function.
Example of the Error
return 5 # ❌ Python does not know what to return from
🔴 Error Message:
SyntaxError: 'return' outside function
✅ Corrected Code:
def my_function():
return 5 # ✅ Return is inside a function
print(my_function())
2. Common Causes and Solutions
2.1. Using return Outside a Function
The return statement must be inside a function, otherwise Python does not know what to return from.
❌ Incorrect Code:
return "Hello, World!" # ❌ Return is outside a function
✅ Solution:
def greet():
return "Hello, World!" # ✅ Return is inside a function
print(greet())
2.2. Indentation Issues (Incorrect Function Block)
Python uses indentation to define code blocks. If return is not indented correctly, Python thinks it is outside the function.
❌ Incorrect Code:
def add(a, b):
return a + b # ❌ Incorrect indentation
✅ Solution:
def add(a, b):
return a + b # ✅ Indented correctly
2.3. Using return Inside a Loop but Outside a Function
If you use return inside a loop without a function, Python will raise this error.
❌ Incorrect Code:
for i in range(5):
return i # ❌ Return is inside a loop but outside any function
✅ Solution:
def get_first_number():
for i in range(5):
return i # ✅ Return is inside a function
print(get_first_number())
2.4. Using return in Global Scope Instead of a Function
You cannot use return in the global scope (outside functions).
❌ Incorrect Code:
x = 10
if x > 5:
return x # ❌ Return outside a function
✅ Solution:
def check_value():
x = 10
if x > 5:
return x # ✅ Return inside a function
print(check_value())
2.5. Using return in a Class but Not in a Method
In object-oriented programming, return must be inside a method (function inside a class).
❌ Incorrect Code:
class Person:
return "I am a person" # ❌ Return is directly inside a class
✅ Solution:
class Person:
def get_info(self):
return "I am a person" # ✅ Return is inside a method
p = Person()
print(p.get_info())
2.6. Using return Inside a Lambda Expression
Lambda functions are anonymous functions that must be a single expression. They cannot use return.
❌ Incorrect Code:
my_lambda = lambda x: return x * 2 # ❌ Lambda cannot have return
✅ Solution:
my_lambda = lambda x: x * 2 # ✅ Return is implicit
print(my_lambda(5))
3. How to Fix the Error Step by Step
- Ensure
returnis inside a function. - Check indentation to make sure
returnbelongs to the function. - Do not use
returnat the global scope (outside any function). - If using a class, put
returninside a method. - For loops, wrap the loop inside a function before using
return. - Avoid
returnin lambda functions—use implicit returns.
4. Using an IDE to Avoid Errors
A good IDE (Integrated Development Environment) helps prevent syntax errors.
- VS Code – Highlights misplaced
returnstatements. - PyCharm – Detects indentation errors and misplaced return statements.
- Jupyter Notebook – Shows clear error messages with line numbers.
