Free Interactive Python Course

Python Tutorial — Learn Python Step by Step

Key takeaway: Master Python programming from scratch — variables, loops, functions, OOP, file handling, and libraries — with clear human-readable explanations and runnable code examples.

50+ Structured Lessons
Runnable Code Examples
100% Free No Registration
Updated October 2026

Python Main Function

The if __name__ == "__main__" pattern lets you write code that runs only when the file is executed directly, not when imported as a module.

How __name__ Works

# Every Python file has a special __name__ variable:
# - When run directly: __name__ == "__main__"
# - When imported: __name__ == "module_name"

# File: greet.py
print(f"__name__ is: {__name__}")

def hello(name):
    return f"Hello, {name}!"

if __name__ == "__main__":
    # This block runs ONLY when you execute: python greet.py
    print(hello("World"))

# Run directly:
# $ python greet.py
# __name__ is: __main__
# Hello, World!

# Import from another file:
# >>> import greet
# __name__ is: greet
# (the if block does NOT execute)

The main() Function Pattern

# Best practice: define a main() function and call it from the guard

def parse_args():
    """Parse command-line arguments."""
    import argparse
    parser = argparse.ArgumentParser(description="Process data files")
    parser.add_argument("filename", help="Input file path")
    parser.add_argument("-v", "--verbose", action="store_true")
    return parser.parse_args()

def process_file(filename, verbose=False):
    """Main processing logic."""
    if verbose:
        print(f"Processing {filename}...")
    with open(filename) as f:
        data = f.read()
    return len(data)

def main():
    """Entry point for the script."""
    args = parse_args()
    result = process_file(args.filename, args.verbose)
    print(f"File size: {result} characters")

if __name__ == "__main__":
    main()

Why Use This Pattern

# WITHOUT the guard — causes problems when imported

# File: calculator.py (BAD)
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

# This runs every time the file is imported!
print("Calculator loaded")
result = add(5, 3)
print(f"5 + 3 = {result}")

# File: app.py
import calculator  # prints "Calculator loaded" and "5 + 3 = 8" — unwanted!

# WITH the guard — clean and reusable

# File: calculator.py (GOOD)
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

if __name__ == "__main__":
    # Only runs when executed directly for testing
    print("Calculator loaded")
    result = add(5, 3)
    print(f"5 + 3 = {result}")

# File: app.py
import calculator  # silent — only imports functions
print(calculator.add(10, 20))  # 30

Practical Examples

# Example 1: Script with error handling
import sys

def main():
    try:
        filename = sys.argv[1]
    except IndexError:
        print("Usage: python script.py <filename>")
        sys.exit(1)

    try:
        with open(filename) as f:
            for line in f:
                print(line.strip().upper())
    except FileNotFoundError:
        print(f"Error: {filename} not found")
        sys.exit(1)

if __name__ == "__main__":
    main()

# Example 2: Module that works both ways
# File: converter.py
def celsius_to_fahrenheit(c):
    return c * 9/5 + 32

def fahrenheit_to_celsius(f):
    return (f - 32) * 5/9

if __name__ == "__main__":
    # Interactive mode when run directly
    temp = float(input("Enter temperature in Celsius: "))
    print(f"{temp}°C = {celsius_to_fahrenheit(temp):.1f}°F")

# Can also be imported:
# from converter import celsius_to_fahrenheit
  • __name__ equals "__main__" when a file is run directly, or the module name when imported.
  • Always wrap script logic in if __name__ == "__main__" so modules stay importable.
  • Define a main() function for better organization and testability.
  • This pattern is essential for writing reusable code that also works as a standalone script.
  • Use sys.argv or argparse inside main for command-line argument handling.

Python Programming Tutorial — Learn Python in a practical, step-by-step way. According to the official Python documentation, Python emphasizes code readability and simplicity, making it ideal for beginners.

Related tools: Python Online Compiler | Python Examples | JavaScript Tutorial | Java Tutorial

Python Career & Learning Guide

Python is the world's most popular programming language for beginners, data science, AI/ML, web development, and automation. This tutorial teaches Python step-by-step with clear explanations and runnable code examples in our free Python Compiler.

Why Learn Python in 2026?

  • #1 Most Popular Language: Ranked first on TIOBE, Stack Overflow, and GitHub.
  • AI and Data Science: The primary language for machine learning (TensorFlow, PyTorch, scikit-learn) and data analysis (Pandas, NumPy).
  • Web Development: Django and Flask power scalable backends at companies like Instagram and Spotify.
  • Automation & Scripting: Automate files, emails, web scraping, and data processing in minutes.

Python vs Other Languages

FeaturePythonJavaJavaScriptC++
SyntaxVery clean, readableVerboseModerateComplex
TypingDynamic, strongStatic, strongDynamic, weakStatic, strong
Best ForAI/ML, Data, WebEnterprise, AndroidWeb Frontend/BackendSystems, Games
Learning Time2–4 weeks basics4–6 weeks basics3–4 weeks basics8–12 weeks basics

Frequently Asked Questions

Do I need prior programming experience to learn Python?

No! Python is specifically designed to be beginner-friendly. This tutorial starts from zero and builds up gradually.

Which Python version should I use?

Python 3.10+ is recommended. All examples in this tutorial use Python 3 syntax.

Is this Python tutorial completely free?

Yes, 100% free with no registration or sign-up required. Access all lessons and code examples anytime.