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.
Python Recursion
Recursion is when a function calls itself to solve a problem by breaking it into smaller sub-problems. Every recursive function needs a base case to stop the recursion.
Basic Recursion: Factorial
# Factorial: n! = n * (n-1) * (n-2) * ... * 1
def factorial(n):
# Base case: stop recursion
if n == 0 or n == 1:
return 1
# Recursive case: call itself with smaller input
return n * factorial(n - 1)
print(factorial(5)) # 120 (5*4*3*2*1)
print(factorial(10)) # 3628800
# How it works:
# factorial(5) = 5 * factorial(4)
# = 5 * 4 * factorial(3)
# = 5 * 4 * 3 * factorial(2)
# = 5 * 4 * 3 * 2 * factorial(1)
# = 5 * 4 * 3 * 2 * 1 = 120Fibonacci Sequence
# Naive recursive Fibonacci (slow for large n)
def fib(n):
if n <= 1:
return n
return fib(n - 1) + fib(n - 2)
print(fib(10)) # 55
# Optimized with memoization (cache results)
from functools import lru_cache
@lru_cache(maxsize=None)
def fib_fast(n):
if n <= 1:
return n
return fib_fast(n - 1) + fib_fast(n - 2)
print(fib_fast(50)) # 12586269025 (instant!)
print(fib_fast(100)) # 354224848179261915075Practical Recursive Examples
# Sum of a list
def sum_list(lst):
if not lst: # base case: empty list
return 0
return lst[0] + sum_list(lst[1:])
print(sum_list([1, 2, 3, 4, 5])) # 15
# Count occurrences in nested structure
def count_items(data):
"""Count all non-list items in a nested list."""
if not isinstance(data, list):
return 1
return sum(count_items(item) for item in data)
nested = [1, [2, 3], [4, [5, 6]], 7]
print(count_items(nested)) # 7
# Flatten a nested list
def flatten(lst):
result = []
for item in lst:
if isinstance(item, list):
result.extend(flatten(item))
else:
result.append(item)
return result
print(flatten([1, [2, [3, 4]], [5, 6]])) # [1, 2, 3, 4, 5, 6]
# Directory tree traversal
import os
def list_files(path, indent=0):
"""Recursively list all files in a directory."""
for entry in os.listdir(path):
full_path = os.path.join(path, entry)
print(" " * indent + entry)
if os.path.isdir(full_path):
list_files(full_path, indent + 2)Recursion vs Iteration
# Recursive version
def power_recursive(base, exp):
if exp == 0:
return 1
return base * power_recursive(base, exp - 1)
# Iterative version (generally preferred for simple cases)
def power_iterative(base, exp):
result = 1
for _ in range(exp):
result *= base
return result
# Both produce the same result
print(power_recursive(2, 10)) # 1024
print(power_iterative(2, 10)) # 1024Recursion Limits and Tail Recursion
import sys
# Python has a default recursion limit of 1000
print(sys.getrecursionlimit()) # 1000
# You can increase it (be careful!)
# sys.setrecursionlimit(5000)
# For deep recursion, convert to iteration
def factorial_iterative(n):
result = 1
for i in range(2, n + 1):
result *= i
return result
print(factorial_iterative(1000)) # works! No stack overflow- Every recursive function needs a base case to prevent infinite recursion.
- Use
@lru_cacheto memoize recursive functions and avoid redundant calculations. - Python default recursion limit is 1000 — use iteration for deep recursion.
- Recursion is ideal for tree/graph traversal, nested structures, and divide-and-conquer algorithms.
- For simple loops (sum, factorial), iteration is usually clearer and more efficient in Python.
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
| Feature | Python | Java | JavaScript | C++ |
|---|---|---|---|---|
| Syntax | Very clean, readable | Verbose | Moderate | Complex |
| Typing | Dynamic, strong | Static, strong | Dynamic, weak | Static, strong |
| Best For | AI/ML, Data, Web | Enterprise, Android | Web Frontend/Backend | Systems, Games |
| Learning Time | 2–4 weeks basics | 4–6 weeks basics | 3–4 weeks basics | 8–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.