A SyntaxError occurs in Python when the parser encounters code that does not conform to the language's grammar rules. Unlike runtime errors, SyntaxErrors are detected before the program runs "” Python cannot even parse the file. The error message includes the file name, line number, and a caret (^) pointing to the approximate location of the problem.
# ❌ Problem
if x > 0
print(x) # SyntaxError: invalid syntax (missing colon)
# ✅ Solution
if x > 0:
print(x) # Colon added
Python requires a colon at the end of every if, elif, else, for, while, def, class, with, and try statement. Forgetting the colon is one of the most common SyntaxErrors.
Python does not allow assigning to literals, function calls, or expressions that are not valid assignment targets. This includes trying to assign to a number, a string, or a function call result.
In Python 2, print was a statement. In Python 3, it is a function and requires parentheses. This is a very common error when running Python 2 code in a Python 3 environment.
Using operators that do not exist in Python (like ++ or -- from C/Java), or using the wrong operator for an operation, causes a SyntaxError or unexpected behavior.
def greet(name) # SyntaxError: expected ':'
print(f"Hello, {name}")
for i in range(5) # SyntaxError: expected ':'
print(i)
class Dog # SyntaxError: expected ':'
pass
def greet(name): # ✅ Colon added
print(f"Hello, {name}")
for i in range(5): # ✅ Colon added
print(i)
class Dog: # ✅ Colon added
pass
5 = x # SyntaxError: cannot assign to literal
"hello" = name # SyntaxError: cannot assign to literal
len(x) = 5 # SyntaxError: cannot assign to function call
x = 5 # ✅ Variable on the left
name = "hello" # ✅ Variable on the left
# If you meant to compare, use == not =
if x == 5: # ✅ Comparison
print("x is 5")
# Python 2 syntax "” fails in Python 3
print "Hello, World!" # SyntaxError: Missing parentheses in call to 'print'
# ✅ Python 3 syntax
print("Hello, World!")
# ✅ Migrate Python 2 code automatically
# pip install 2to3
# 2to3 -w yourfile.py
x = 5
x++ # SyntaxError: invalid syntax (++ does not exist in Python)
x-- # SyntaxError: invalid syntax
# Also common: using = instead of == in conditions
if x = 5: # SyntaxError: invalid syntax (should be ==)
x = 5
x += 1 # ✅ Increment in Python
x -= 1 # ✅ Decrement in Python
if x == 5: # ✅ Comparison uses ==
print("x is 5")
It means Python encountered code that does not follow its grammar rules. The error message shows the file and line number, and a caret (^) points to the approximate location of the problem.
Python detects the error where it becomes confused, not necessarily where the mistake is. An unclosed parenthesis on line 5 might cause a SyntaxError on line 10. Check the lines before the reported error.
Run python -m py_compile yourfile.py in the terminal. It checks for syntax errors and reports them without executing the code.
No. Python does not have ++ or -- operators. Use x += 1 to increment and x -= 1 to decrement.
IndentationError is a subclass of SyntaxError. SyntaxError is the general error for invalid Python grammar. IndentationError specifically occurs when the indentation does not match what Python expects.
Explore 500+ free tutorials across 20+ languages and frameworks.