Python pass Statement

Ka Kavitha V Updated 03 Oct 2026
5 min read

pass Statement

In Python, code blocks — the bodies of if statements, loops, functions, and classes — cannot be empty. A colon must always be followed by at least one indented statement. But during development you often need a block that exists structurally but does nothing yet.

That is what the pass statement is for. pass is a do-nothing placeholder: when Python reaches it, nothing happens, and the program simply continues.

Why Is pass Needed?

Without a statement in the block, Python raises an error:

x = 12
y = 25

if y < x:

print("Done")

Output:

IndentationError: expected an indented block after 'if' statement on line 4

Adding pass makes the block valid:

x = 12
y = 25

if y < x:
    pass

print("Done")

Expected output:

Done

What happens:

  • The condition y < x (25 < 12) is checked.
  • Even if it were True, the block would perform no action.
  • No syntax error occurs, and the program continues to the next line.

Common Uses of pass

The pass statement is useful when you are:

  • Designing program structure before writing the implementation
  • Writing syntactically valid but incomplete code
  • Intentionally ignoring a specific condition or case
  • Creating placeholder functions or classes
  • Developing incrementally, so that unfinished parts do not break the program

Using pass During Development

When building an application step by step, you may want to outline the logic before finalizing every branch.

Example: Placeholder Logic

user_age = 17

if user_age >= 18:
    print("User allowed")
else:
    pass  # TODO: add a message for underage users

print("Check complete")

Expected output:

Check complete

The program runs without errors, and the comment marks exactly where future logic will go.

Note: An else: pass block that will never contain code is unnecessary — you can simply leave out the else. Use else: pass only as a temporary placeholder.

pass vs Comments

A comment and pass are not interchangeable:

Comment (#)pass
Seen by PythonNo — completely ignoredYes — a real statement
Can satisfy the "block must not be empty" ruleNoYes
PurposeExplains code to humansFills a block that must contain a statement

Because comments are ignored, a block containing only a comment is still empty.

Invalid Code (Raises an Error)

marks = 92

if marks > 95:
    # Outstanding performance

print("Evaluation complete")

Output:

IndentationError: expected an indented block after 'if' statement on line 3

Valid Code Using pass

marks = 92

if marks > 95:
    pass  # Outstanding performance handling will be added later

print("Evaluation complete")

Expected output:

Evaluation complete

Here pass satisfies Python's syntax requirement, and the comment explains the plan to readers.

Using pass With if–elif–else

You can use pass in any branch when no action is required for that case.

Example: Selective Handling

temperature = 0

if temperature < 0:
    print("Freezing")
elif temperature == 0:
    pass  # No message needed at exactly zero
else:
    print("Above freezing")

print("Reading recorded")

Expected output:

Reading recorded

When temperature is exactly 0, the elif branch matches, so the other branches are skipped — but pass means nothing is printed for that case. Without this branch, the value 0 would fall through to else and print "Above freezing".

pass in Other Contexts

Although commonly seen with if statements, pass works in any block: functions, loops, classes, and exception handlers.

Empty Function Placeholder

def process_order(order_id):
    pass  # Logic will be implemented later

result = process_order(101)
print(result)

Expected output:

None

The function can be called without errors. Because it has no return statement, it returns None.

Empty Class Definition

class PaymentGateway:
    pass

gateway = PaymentGateway()
print(type(gateway))

Expected output:

<class '__main__.PaymentGateway'>

Even an empty class can be used to create objects. This is useful when planning the structure of a program, or when you need a simple custom type — for example, a custom exception: class InvalidOrderError(Exception): pass.

Empty Loop Body

for number in range(3):
    pass

print("Loop finished")

Expected output:

Loop finished

The loop runs three times but does nothing on each pass.

Ignoring a Specific Exception

try:
    value = int("abc")
except ValueError:
    pass  # Ignore invalid numbers in this optional field

print("Processing continues")

Expected output:

Processing continues

Caution: Silently ignoring errors can hide real bugs. Only use except ...: pass when you are certain the error is harmless, and always catch a specific exception type — never a bare except:.

pass vs continue vs break

These three keywords are often confused, especially inside loops:

KeywordEffect
passDoes nothing; execution continues with the next statement in the same block
continueSkips the rest of the current loop iteration and moves to the next iteration
breakExits the entire loop immediately
for n in range(1, 4):
    if n == 2:
        pass
    print("pass ->", n)

Expected output:

pass -> 1
pass -> 2
pass -> 3

pass changes nothing, so 2 is still printed. If you replaced pass with continue, 2 would be skipped. You will study continue and break in the loop lessons.

Common Mistakes

  • Using a comment instead of pass — a comment alone does not make a block valid.
  • Forgetting to replace placeholders — search your code for pass and TODO before releasing it.
  • Confusing pass with continue — pass does not skip anything.
  • Silencing errors with except: pass — this hides problems; handle exceptions properly or catch only specific ones.
  • Python if Statement — where pass is often first used
  • Python While and For Loops — break and continue
  • Python Functions and Classes — placeholder definitions
  • Python Exception Handling — handling errors properly

0 Comments

Reviewed before they appear

No comments yet.

Python
Ask about this post
AI Ask about this post

Ask questions about Python pass Statement and get answers drawn from it.

Signed-in readers only.