Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to indent in Python

Getting Started with Indentation

Indentation in Python is not just about making the code look pretty. It plays a functional role, marking the beginning and end of code blocks. If you've worked with languages like C++ or Java, you might be used to using curly brackets {} to define these blocks. In Python, however, it's all about the whitespace.

The Basics of Indentation in Python

The concept of indentation in Python can be a bit tricky for new programmers. Simply put, indentation is used to define the level of code. It is like creating a hierarchy of code execution. Let's consider a real-life example: imagine a group of children playing a game. The teacher, who is the main controller of the game (like a main function in Python), gives instructions, then the kids (functions) follow these instructions. This is similar to how Python operates - the main function gives instructions to other functions and they follow in a specific order.

Here's a simple Python code snippet to demonstrate this:

def main():
    print("Game starts")
    play_game()

def play_game():
    print("Playing the game...")

main()

In this example, main() is the main function that calls play_game(). The indentation before print("Playing the game...") tells Python that this line is part of the play_game() function.

Mistakes to Avoid

One common mistake among new programmers is inconsistent indentation. Python expects all code within the same block to have the same level of indentation. For instance, the following code will result in an IndentationError.

def main():
    print("Game starts")
     play_game()  # Notice the extra space at the start of this line

def play_game():
    print("Playing the game...")

main()

The extra space before play_game() causes Python to raise an IndentationError, as it expects all lines in the same block to have the same indentation.

Indenting Control Structures

Control structures, like if, for, and while, also use indentation to define blocks of code. Let's take an if statement as an example:

def main():
    game_score = 10
    if game_score > 5:
        print("You're winning!")

main()

In this example, the line print("You're winning!") is only executed if game_score is greater than 5. The indentation before print tells Python that this line is part of the if statement.

Indentation with Loops

Loops in Python also use indentation. Here's an example using a for loop:

def main():
    for i in range(5):
        print("This is loop iteration", i)

main()

In this code, print("This is loop iteration", i) is indented to show that it is part of the for loop. Each time through the loop, Python executes this indented block of code.

Tab or Spaces?

There's an ongoing debate among programmers about whether tabs or spaces are better for indentation. Python allows both, but it's important to be consistent. If you start with spaces, stick with them throughout your code, and vice versa. The Python style guide (PEP 8) recommends using 4 spaces per indentation level.

Conclusion

In conclusion, indentation in Python is more than just about aesthetics. It's a fundamental aspect of the language's syntax, used to define blocks of code. Think of it like paragraphs in a book - they break up the text and make it easier to understand. In Python, proper indentation breaks up your code, making it easier for both Python and human readers to understand. So next time you're writing Python code, pay attention to your indentation - your future self (and any other programmers who read your code) will thank you!