Skip to content

MicroPython Style Guide

Why Follow a Style Guide?

Writing clean, readable, and maintainable code is crucial in software development. Following a style guide like PEP 8 ensures consistency across projects, making code easier to read, debug, and collaborate on.

Here are some key benefits of adhering to PEP 8:

  • Readability: Code is easier to understand when it follows a consistent format.
  • Maintainability: Well-structured code reduces technical debt and makes future modifications smoother.
  • Collaboration: A uniform style helps teams work together efficiently, avoiding confusion caused by differing coding styles.
  • Professionalism: Well-formatted code demonstrates attention to detail and professionalism in software development.
  • Tooling Support: Many linters and formatters (like black, flake8, and [pylint](https://pypi.org/project/pylint/)) enforce PEP 8 automatically, reducing manual errors.

By following PEP 8, developers create code that is not just functional but also elegant and easy to maintain. You can read the full style guide here:
PEP 8 – Style Guide for Python Code

What Are Linters?

A linter is a tool that analyzes source code for potential errors, stylistic inconsistencies, and deviations from best practices. Linters help developers catch issues early, maintain code quality, and enforce coding standards like PEP 8 in Python.

Why Use a Linter?
- Detect Syntax Errors: Finds missing colons, incorrect indentation, and other syntax mistakes. - Enforce Coding Standards: Ensures compliance with PEP 8 and other style guides. - Improve Readability: Suggests improvements for clearer and more maintainable code. - Catch Bugs Early: Identifies potential runtime errors before execution. - Automate Code Reviews: Helps teams maintain consistency across large projects.

Variable Naming

Using meaningful and consistent names improves code readability and maintainability.

  • Lowercase with underscores for variable names:
    python user_name = "Alice" total_count = 42

  • Uppercase for constants:

    MAX_RETRIES = 3
    API_URL = "https://example.com"
    

  • CamelCase for class names:

    class UserProfile:
        pass
    


Indentation & Spacing

Proper indentation and spacing make code easier to follow.

  • Use 4 spaces per indentation level (avoid tabs).
  • Surround operators with spaces for readability:
result = (x + y) * z
  • Use blank lines to separate logical sections:
def fetch_data():
    pass  # Fetching logic

def process_data():
    pass  # Processing logic

Line Length

Breaking Long Lines Properly

If a line exceeds 79 characters, break it using implicit line continuation inside parentheses, brackets, or braces.

Example 1: Breaking a Long Function Call

Instead of writing:

send_email("admin@example.com", "user@example.com", "Subject: Update", "Body text here", True, "high")

Break it into multiple lines for better readability:

send_email("admin@example.com", "user@example.com", "Subject: Update", "Body text here", True, "high")

Example 2: Breaking a Long String

Instead of:

error_message = "An unexpected error occurred. Please try again later or contact support@example.com."

Use implicit continuation:

error_message = (
    "An unexpected error occurred. "
    "Please try again later or contact support@example.com."
)

Example 3: Breaking a Long Conditional Statement

Instead of:

if user.is_authenticated and user.is_active and user.has_permission("admin_access") and not user.is_suspended:

Break it like this:

if (
    user.is_authenticated
    and user.is_active
    and user.has_permission("admin_access")
    and not user.is_suspended
):

Using these techniques ensures that your code remains readable, PEP 8 compliant, and easy to maintain.


➡ Next Steps