Why is there no goto in Python?

Python does not include a goto statement, which is an intentional design choice. The goto statement allows unconditional jumps to labeled positions in code, but it makes programs harder to read and debug.

What is goto in C?

The goto statement in C provides an unconditional jump to a labeled statement within the same function. Here's the basic syntax ?

goto label;
...
label: statement;

Example in C

#include <stdio.h>
int main () {
   int a = 10;
   LOOP:do {
      if( a == 15) {
         /* skip the iteration */
         a = a + 1;
         goto LOOP;
      }
      printf("a = %d\n", a);
      a++;
   }while( a < 20 );
   return 0;
}
a = 10
a = 11
a = 12
a = 13
a = 14
a = 16
a = 17
a = 18
a = 19

Note: The use of goto is discouraged even in C because it creates "spaghetti code" that's difficult to understand and maintain.

Why Python Doesn't Have goto

Python was designed with readability and simplicity in mind. Instead of goto, Python provides structured control flow statements that achieve the same results more clearly ?

  • Loops: for and while loops with break and continue
  • Conditionals: if, elif, and else statements
  • Functions: Breaking code into smaller, reusable functions
  • Exception handling: try, except, and finally blocks

Better Alternatives to goto

Using Loop Control

# Instead of goto, use break and continue
for i in range(10, 20):
    if i == 15:
        continue  # Skip this iteration
    print(f"i = {i}")
i = 10
i = 11
i = 12
i = 13
i = 14
i = 16
i = 17
i = 18
i = 19

Using Functions

def process_number(num):
    if num <= 0:
        return "negative or zero"
    elif num <= 5:
        return "small number"
    else:
        return "large number"

numbers = [-1, 3, 8]
for num in numbers:
    result = process_number(num)
    print(f"{num}: {result}")
-1: negative or zero
3: small number
8: large number

The goto-statement Module

While not recommended, there is a third-party module that adds goto functionality to Python. It works only up to Python 3.6 ?

pip install goto-statement
from goto import with_goto

@with_goto
def count_to_three():
    i = 1
    
    label .start
    if i > 3:
        goto .end
    
    print(f"Count: {i}")
    i += 1
    goto .start
    
    label .end
    print("Done!")

Best Practices

Instead of goto Use Python Feature Benefit
Jump to different sections Functions Reusable, testable code
Skip iterations continue Clear intent
Exit loops early break Structured flow
Error handling jumps try/except Robust error management

Conclusion

Python intentionally excludes goto to encourage cleaner, more readable code. Use functions, loops with break/continue, and exception handling for better structured programs.

Updated on: 2026-03-26T21:50:43+05:30

13K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements