Christopher Bailey is the creator and host of the Real Python podcast. He has edited every episode and booked every guest for the show.
He’s a constant learner and eager to share his knowledge. Christopher has a decade of in classroom teaching experience and more as a consultant to small businesses. He is a programmer and data analyst, working in banking, marketing and environmental science. Christopher lives in Colorado with his wife and two dogs.
Courses by Christopher:
- Python Basics: Strings and String Methods
- Python Basics: Code Your First Python Program
- Arduino With Python: Getting Started
- Make a 2D Side-Scroller Game With PyGame
- Python Modules and Packages: An Introduction
- Cool New Features in Python 3.8
- Python Type Checking
- Strings and Character Data in Python
- Lists and Tuples in Python
- Interactive Data Visualization With Bokeh and Python
- Python Decorators 101
- Making HTTP Requests With Python
- Python 3's F-Strings: An Improved String Formatting Syntax
Tutorials Contributed to by Christopher:
Courses Contributed to by Christopher:
- Testing Your Code With Python's unittest
- Leverage OpenAI's API in Your Python Projects
- Vector Databases and Embeddings With ChromaDB
- Using Loguru to Simplify Python Logging
- Adding Python to PATH
- Understanding CRUD Operations in SQL
- Downloading Files From URLs With Python
- Working With APIs in Python: Reading Public Data
- What Does Python's __init__.py Do?
- Start Building With FastAPI
- Write Python Docstrings Effectively
- Improving Your Tests With the Python Mock Object Library
- Getting Started With Google Gemini CLI
- Create Callable Instances With Python's .__call__()
- uv vs pip: Python Packaging and Dependency Management
- Intro to Object-Oriented Programming (OOP) in Python
- Tips for Using the AI Coding Editor Cursor
- Reading User Input From the Keyboard With Python
- Exploring Asynchronous Iterators and Iterables
- Using Functional Programming in Python
- Introduction to pandas
- Getting Started With Claude Code
- Break Out of Loops With Python's break Keyword
- Python Operators and Expressions
- Building UIs in the Terminal With Python Textual
- Speed Up Python With Concurrency
- Investigating Quasar Data With Polars and Interactive marimo Notebooks
- Python Descriptors
- What's New in Python 3.14
- Modern Python Linting With Ruff
- Strip Characters From a Python String
- Python Project Management With uv
- Python String Splitting
- A History of Python Versions and Features
- Profiling Performance in Python
- Deep vs Shallow Copies in Python
- Working With Python's .__dict__ Attribute
- Exploring Python T-Strings
- Working With Python's Built-in Exceptions
- Exploring Python Closures: Examples and Use Cases
- Getting Started With marimo Notebooks
- Exploring Protocols in Python
- Implementing the Factory Method Pattern in Python
- Starting With DuckDB and Python
- Exploring Python's list Data Type With Examples
- Python Continuous Integration and Deployment Using GitHub Actions
- Execute Your Python Scripts With a Shebang
- The LEGB Rule & Understanding Python Scope
- First Steps With LangChain
- Working With Missing Data in Polars
- Using the Python subprocess Module
- Thread Safety in Python: Locks and Other Techniques
- MySQL Databases and Python
- Creating a Python Dice Roll Application
- Checking for Membership Using Python's "in" and "not in" Operators
- Building a Code Image Generator With Python
- What Can You Do With Python?
- Using Structural Pattern Matching in Python
- Getting to Know Duck Typing in Python
- Working With Python Polars
- Single and Double Underscore Naming Conventions in Python
- Concatenating Strings in Python Efficiently
- Building a Python Command-Line To-Do App With Typer
- NumPy Techniques and Practical Examples
- Creating a Scalable Flask Web Application From Scratch
- Exploring Python's tuple Data Type With Examples
- Building Dictionary Comprehensions in Python
- Ways to Start Interacting With Python
- Building HTTP APIs With Django REST Framework
- Programming Sockets in Python
- Documenting Python Projects With Sphinx and Read the Docs
- Handling or Preventing Errors in Python: LBYL vs EAFP
- Managing Dependencies With Python Poetry
- Working With TOML and Python
- Formatting Floats Inside Python F-Strings
- Introduction to Web Scraping With Python
- Python's Magic Methods in Classes
- Understanding Python's Global Interpreter Lock (GIL)
- Using Type Hints for Multiple Return Types in Python
- What's New in Python 3.13
- Differences Between Python's Mutable and Immutable Types
- Advanced Python import Techniques
- Customizing VS Code Through Color Themes
- When to Use .__repr__() vs .__str__() in Python
- Using Pydantic to Simplify Python Data Validation
- Using Astropy for Astronomy With Python
- Exploring Astrophysics in Python With pandas and Matplotlib
- Sorting Dictionaries in Python: Keys, Values, and More
- Interacting With REST APIs and Python
- Simulate a Text File in Python
- pandas GroupBy: Grouping Real World Data in Python
- Exercises Course: Introduction to Web Scraping With Python
- Customize VS Code Settings
- Defining Python Constants for Code Maintainability
- Build a GUI Calculator With PyQt and Python
- Rounding Numbers in Python
- Listing All Files in a Directory With Python
- Python Interfaces: Object-Oriented Design Principles
- Efficient Iterations With Python Iterators and Iterables
- Building a Python GUI Application With Tkinter
- HTML and CSS Foundations for Python Developers
- Flattening a List of Lists in Python
- Working With Global Variables in Python Functions
- Python Basics Exercises: Scopes
- Using raise for Effective Exceptions
- Generating QR Codes With Python
- Python Deep Learning: PyTorch vs Tensorflow
- Finding Python Easter Eggs
- SQLite and SQLAlchemy in Python: Move Your Data Beyond Flat Files
- Python Basics Exercises: Dictionaries
- Creating Asynchronous Tasks With Celery and Django
- Python Basics Exercises: Installing Packages With pip
- Unleashing the Power of the Console With Rich
- Create Conway's Game of Life With Python
- Python Basics Exercises: Lists and Tuples
- Building Enumerations With Python's enum
- Python Basics: Lists and Tuples
- Create a Tic-Tac-Toe Python Game Engine With an AI Player
- Python Basics Exercises: Functions and Loops
- HTTP Requests With Python's urllib.request
- Python Basics Exercises: Reading and Writing Files
- Python Basics Exercises: Strings and String Methods
- How to Get the Current Time in Python
- Advent of Code: Solving Puzzles With Python
- Python Basics Exercises: Modules and Packages
- Python Basics: Modules and Packages
- Python Basics Exercises: Numbers and Math
- Using the bpython Enhanced REPL
- Python Basics Exercises: Building Systems With Classes
- Python Basics Exercises: Object-Oriented Programming
- Using Python's min() and max()
- What's New in Python 3.12
- Python Basics Exercises: Conditional Logic and Control Flow
- Design and Guidance: Object-Oriented Programming in Python
- Inheritance and Internals: Object-Oriented Programming in Python
- Class Concepts: Object-Oriented Programming in Python
- Create a Python Wordle Clone With Rich
- Replacing a String in Python
- Process Images Using the Pillow Library and Python
- What Does if __name__ == "__main__" Mean in Python?
- Reversing Strings in Python
- Creating Web Maps From Your Data With Python Folium
- Filtering Iterables With Python
- Jinja Templating
- Recursion in Python
- Python Basics: Reading and Writing Files
- Mazes in Python: Build, Visualize, Store, and Solve
- Getting the First Match From a Python List or Iterable
- Using k-Nearest Neighbors (kNN) in Python
- Metaclasses in Python
- Getting the Most Out of the Python Standard REPL
- Publishing Python Packages to PyPI
- Using Python's assert to Debug and Test Your Code
- Python Basics: Installing Packages With pip
- Using OrderedDict in Python
- Check if a Python String Contains a Substring
- YAML: Python's Missing Battery
- Summing Values the Pythonic Way With sum()
- Manipulating ZIP Files With Python
- Writing Clean, Pythonic Code With namedtuple
- Using the Terminal on Windows
- Getters and Setters in Python
- Python Basics: Building Systems With Classes
- Using the Terminal on Linux
- Python Basics: Object-Oriented Programming
- Python Basics Exercises: File System Operations
- Using the Terminal on macOS
- Build Cross-Platform GUI Apps With Kivy
- Python Basics: File System Operations
- Context Managers and Using Python's with Statement
- Python Basics: Dictionaries
- Using Python's pathlib Module
- Everyday Project Packaging With pyproject.toml
- Deploy a Django App With Gunicorn and Nginx
- Refactoring: Prepare Your Code to Get Help
- Python Basics: Scopes
- Cool New Features in Python 3.11
- Python Basics: Numbers and Math
- Using Multiple Constructors in Your Python Classes
- Sneaky REST APIs With Django Ninja
- Building Python Project Documentation With MkDocs
- Python Basics: Conditional Logic and Control Flow
- Building Command Line Interfaces With argparse
- Python Basics: Functions and Loops
- Building a URL Shortener With FastAPI and Python
- Caching in Python With lru_cache
- Exploring Special Function Parameters
- Python Basics: Finding and Fixing Code Bugs
- Managing Attributes With Python's property()
- Using the Python not Operator
- Using the Python and Operator
- Building a Site Connectivity Checker
- Python mmap: Doing File I/O With Memory Mapping
- Combining Data in pandas With concat() and merge()
- Write and Test a Python Function: Interview Practice
- Data Cleaning With pandas and NumPy
- Exploring Scopes and Closures in Python
- Using Python Class Constructors
- Testing Your Code With pytest
- Building a Django User Management System
- Exploring Keywords in Python
- Python REST APIs With FastAPI
- Using Python's datetime Module
- Sorting Data in Python With pandas
- Counting With Python's Counter
- Exploring the Fibonacci Sequence With Python
- Starting With Linear Regression in Python
- Python any(): Powered Up Boolean Function
- Defining Python Functions With Optional Arguments
- Python's len() Function
- Looping With Python enumerate()
- Starting With Python IDLE
- Working With Pipenv
- Deploy Your Python Script on the Web With Flask
- Raising and Handling Python Exceptions
- Host Your Django Project on Heroku
- Binary, Bytes, and Bitwise Operators in Python
- Data Visualization Interfaces in Python With Dash
- Building a Neural Network & Making Predictions With Python AI
- Building Lists With Python's .append()
- Using plt.scatter() to Visualize Data in Python
- Reading Input and Writing Output in Python
- Writing Idiomatic Python
- Python Assignment Expressions and Using the Walrus Operator
- Using Pygame to Build an Asteroids Game in Python
- Cool New Features in Python 3.10
- Rock, Paper, Scissors With Python: A Command Line Game
- Pass by Reference in Python: Best Practices
- Using Data Classes in Python
- Graph Your Data With Python and ggplot
- Splitting Datasets With scikit-learn and train_test_split()
- Exploring the Python math Module
- Reading and Writing Files With pandas
- Using the Python return Statement Effectively
- Using sleep() to Code a Python Uptime Bot
- The pandas DataFrame: Working With Data Efficiently
- Speech Recognition With Python
- The Square Root Function in Python
- Defining and Calling Python Functions
- Python Inner Functions
- Python vs JavaScript for Python Developers
- Using pandas to Make a Gradebook in Python
- Python Basics: Setting Up Python
- Explore Your Dataset With pandas
- How to Set Up a Django Project
- Using the Python or Operator
- Stacks and Queues: Selecting the Ideal Data Structure
- Simplify Python GUI Development With PySimpleGUI
- Python's map() Function: Transforming Iterables
- Learn Text Classification With Python and Keras
- Start Managing Multiple Python Versions With pyenv
- Python vs Java: Object Oriented Programming
- Understanding Python List Comprehensions
- Records and Sets: Selecting the Ideal Data Structure
- Python Booleans: Leveraging the Values of Truth
- Django View Authorization: Restricting Access
- Navigating Namespaces and Scope in Python
- Dictionaries and Arrays: Selecting the Ideal Data Structure
- Creating PyQt Layouts for GUI Applications
- Python Modulo: Using the % Operator
- Plot With pandas: Python Data Visualization Basics
- Evaluate Expressions Dynamically With Python eval()
- Introduction to Sorting Algorithms in Python
- Django Admin Customization
- Serializing Objects With the Python pickle Module
- Python Turtle for Beginners
- How Python Manages Memory
- Formatting Python Strings
- Regular Expressions and Building Regexes in Python
- Handling Missing Keys With the Python defaultdict Type
- Simulating Real-World Processes in Python With SimPy
- Creating a Binary Search in Python
- Getting Started With MicroPython
- Web Scraping With Beautiful Soup and Python
- Cool New Features in Python 3.9
- Using Google Login With Flask
- Working With Linked Lists in Python
- Command Line Interfaces in Python
- Exploring HTTPS and Cryptography in Python
- Editing Excel Spreadsheets in Python With openpyxl
- Django Redirects
- Identify Invalid Python Syntax
- Practical Recipes for Working With Files in Python
- Python's None: Null in Python
- Mastering Python's Built-in time Module
- Grow Your Python Portfolio With 13 Intermediate Project Ideas
- Pointers and Objects in Python
- Unicode in Python: Working With Character Encodings
- Creating a Discord Bot in Python
- Python Generators 101
- Getting the Most Out of a Python Traceback
- Parallel Iteration With Python's zip() Function
- A Beginner's Guide to pip
- Convert a Python String to int
- Exploring unittest.mock in Python
- The Python print() Function: Go Beyond the Basics
- Structuring a Python Application
- Python Coding Interviews: Tips & Best Practices
- Inheritance and Composition: A Python OOP Guide
- Comparing Python Objects the Right Way: "is" vs "=="
- Using NumPy's np.arange() Effectively
- Defining Main Functions in Python
- Implementing a Stack in Python
- How to Work With a PDF in Python
- Playing and Recording Sound in Python
- Using Sets in Python
- Exploring Basic Data Types in Python
- Supercharge Your Classes With Python super()
- Python args and kwargs: Demystified
Podcast Episodes Featuring Christopher:
- The Real Python Podcast – Episode #307: Improving NumPy Performance on Free-Threaded Python
- The Real Python Podcast – Episode #306: Programmatically Developing LLM Prompts With DSPy
- The Real Python Podcast – Episode #305: Should You Understand Your Entire Python Codebase?
- The Real Python Podcast – Episode #304: Configuring a Versatile LLM Harness & Scraping the Web With Scrapy
- The Real Python Podcast – Episode #303: Free-Threaded Python's History & uv in Production
- The Real Python Podcast – Episode #302: Constructing and Judging Modern Agentic Workflows
- The Real Python Podcast – Episode #301: Running Python Locally in a Sandbox
- The Real Python Podcast – Episode #300: Maintaining Your Python Developer Instincts While Using LLM Tools
- The Real Python Podcast – Episode #299: EuroPython 2026: Celebrating 25 Years
- The Real Python Podcast – Episode #298: Reducing the Size of Python Docker Containers
- The Real Python Podcast – Episode #297: Improving Python Through PEPs and Protocols
- The Real Python Podcast – Episode #296: Managing Polars Schema Issues & Profiling GitHub Users
- The Real Python Podcast – Episode #295: Agentic Architecture: Why Files Aren't Always Enough
- The Real Python Podcast – Episode #294: Declarative Charts in Python & Discerning Iterators vs Iterables
- The Real Python Podcast – Episode #293: Agentic Data Science Pair Programming With marimo pair
- The Real Python Podcast – Episode #292: Becoming a Better Python Developer Through Learning Rust
- The Real Python Podcast – Episode #291: Reassessing the LLM Landscape & Summoning Ghosts
- The Real Python Podcast – Episode #290: Advice on Managing Projects & Making Python Classes Friendly
- The Real Python Podcast – Episode #289: Limitations in Human and Automated Code Review
- The Real Python Podcast – Episode #288: Automate Exploratory Data Analysis & Invent Python Comprehensions
- The Real Python Podcast – Episode #287: Crafting and Editing In-Depth Tutorials at Real Python
- The Real Python Podcast – Episode #286: Overcoming Testing Obstacles With Python's Mock Object Library
- The Real Python Podcast – Episode #285: Exploring MCP Apps & Adding Interactive UIs to Clients
- The Real Python Podcast – Episode #284: Running Local LLMs With Ollama and Connecting With Python
- The Real Python Podcast – Episode #283: Improving Your GitHub Developer Experience
- The Real Python Podcast – Episode #282: Testing Python Code for Scalability & What's New in pandas 3.0
- The Real Python Podcast – Episode #281: Continuing to Improve the Learning Experience at Real Python
- The Real Python Podcast – Episode #280: Considering Fast and Slow in Python Programming
- The Real Python Podcast – Episode #279: Coding Python With Confidence: Beginners Live Course Participants
- The Real Python Podcast – Episode #278: PyCoder's Weekly 2025 Top Articles & Hidden Gems
- The Real Python Podcast – Episode #277: Moving Towards Spec-Driven Development
- The Real Python Podcast – Episode #276: Exploring Quantum Computing & Python Frameworks
- The Real Python Podcast – Episode #275: Building a FastAPI Application & Exploring Python Concurrency
- The Real Python Podcast – Episode #274: Preparing Data Science Projects for Production
- The Real Python Podcast – Episode #273: Advice for Writing Maintainable Python Code
- The Real Python Podcast – Episode #272: Michael Kennedy: Managing Your Own Python Infrastructure
- The Real Python Podcast – Episode #271: Benchmarking Python 3.14 & Enabling Asyncio to Scale
- The Real Python Podcast – Episode #270: Evolving Teaching Python in the Classroom
- The Real Python Podcast – Episode #269: Python 3.14: Exploring the New Features
- The Real Python Podcast – Episode #268: Advice on Beginning to Learn Python
- The Real Python Podcast – Episode #267: Managing Feature Flags & Comparing Python Visualization Libraries
- The Real Python Podcast – Episode #266: Dangers of Automatically Converting a REST API to MCP
- The Real Python Podcast – Episode #265: Python App Hosting Choices & Documenting Python's History
- The Real Python Podcast – Episode #264: Large Language Models on the Edge of the Scaling Laws
- The Real Python Podcast – Episode #263: Exploring Mixin Classes in Python
- The Real Python Podcast – Episode #262: Travis Oliphant: SciPy, NumPy, and Fostering Scientific Python
- The Real Python Podcast – Episode #261: Selecting Inheritance or Composition in Python
- The Real Python Podcast – Episode #260: Harnessing the Power of Python Polars
- The Real Python Podcast – Episode #259: Design Patterns That Don't Translate to Python
- The Real Python Podcast – Episode #258: Supporting the Python Package Index
- The Real Python Podcast – Episode #257: Comparing Real-World Python Performance Against Big O
- The Real Python Podcast – Episode #256: Solving Problems and Saving Time in Chemistry With Python
- The Real Python Podcast – Episode #255: Structuring Python Scripts & Exciting Non-LLM Software Trends
- The Real Python Podcast – Episode #254: Scaling Python Web Applications With Kubernetes and Karpenter
- The Real Python Podcast – Episode #253: Starting With marimo Notebooks & Python App Config Management
- The Real Python Podcast – Episode #252: Rodrigo Girão Serrão: Python Training, itertools, and Idioms
- The Real Python Podcast – Episode #251: Python Thread Safety & Managing Projects With uv
- The Real Python Podcast – Episode #250: DjangoCon Europe 2025: Live Recording From Dublin
- The Real Python Podcast – Episode #249: Going Beyond requirements.txt With pylock.toml and PEP 751
- The Real Python Podcast – Episode #248: Experiments With Gen AI, Knowledge Graphs, Workflows, and Python
- The Real Python Podcast – Episode #247: Exploring DuckDB & Comparing Python Expressions vs Statements
- The Real Python Podcast – Episode #246: Learning Intermediate Python With a Deep Dive Course
- The Real Python Podcast – Episode #245: GUIs & TUIs: Choosing a User Interface for Your Python Project
- The Real Python Podcast – Episode #244: A Decade of Automating the Boring Stuff With Python
- The Real Python Podcast – Episode #243: Manage Projects With pyproject.toml & Explore Polars LazyFrames
- The Real Python Podcast – Episode #242: Eric Matthes: Maybe Don't Start With Unit Tests
- The Real Python Podcast – Episode #241: Deciphering Python Jargon & Compiling Python 1.0
- The Real Python Podcast – Episode #240: Telling Effective Stories With Your Python Visualizations
- The Real Python Podcast – Episode #239: Behavior-Driven vs Test-Driven Development & Using Regex in Python
- The Real Python Podcast – Episode #238: Charlie Marsh: Accelerating Python Tooling With Ruff and uv
- The Real Python Podcast – Episode #237: Testing Your Python Code Base: Unit vs. Integration
- The Real Python Podcast – Episode #236: Simon Willison: Using LLMs for Python Development
- The Real Python Podcast – Episode #235: Principles for Considering Your Python Tooling
- The Real Python Podcast – Episode #234: Building New Structures for Learning Python
- The Real Python Podcast – Episode #233: PyCoder's Weekly 2024 Top Articles & Missing Gems
- The Real Python Podcast – Episode #232: Exploring Modern Sentiment Analysis Approaches in Python
- The Real Python Podcast – Episode #231: Good Python Programming Practices When New to the Language
- The Real Python Podcast – Episode #230: marimo: Reactive Notebooks and Deployable Web Apps in Python
- The Real Python Podcast – Episode #229: The Joy of Tinkering & Python Free-Threading Performance
- The Real Python Podcast – Episode #228: Maintaining the Foundations of Python & Cautionary Tales
- The Real Python Podcast – Episode #227: New PEPs: Template Strings & External Wheel Hosting
- The Real Python Podcast – Episode #226: PySheets: Spreadsheets in the Browser Using PyScript
- The Real Python Podcast – Episode #225: Python Getting Faster and Leaner & Ideas for Django Projects
- The Real Python Podcast – Episode #224: Narwhals: Expanding DataFrame Compatibility Between Libraries
- The Real Python Podcast – Episode #223: Exploring the New Features of Python 3.13
- The Real Python Podcast – Episode #222: Using Virtual Environments in Docker & Comparing Python Dev Tools
- The Real Python Podcast – Episode #221: Thriving as a Developer With ADHD
- The Real Python Podcast – Episode #220: Configuring Git Pre-Commit Hooks & Estimating Software Projects
- The Real Python Podcast – Episode #219: Astrophysics and Astronomy With Python & PyCon Africa 2024
- The Real Python Podcast – Episode #218: Exploring Robotics and Python Through Electronic Projects
- The Real Python Podcast – Episode #217: Packaging Data Analyses & Using pandas GroupBy
- The Real Python Podcast – Episode #216: Learning Through Building the Black Python Devs Community
- The Real Python Podcast – Episode #215: Using GraphQL in Django With Strawberry & Prototype Purgatory
- The Real Python Podcast – Episode #214: Build Captivating Display Tables in Python With Great Tables
- The Real Python Podcast – Episode #213: Constraint Programming & Exploring Python's Built-in Functions
- The Real Python Podcast – Episode #212: Digging Into Graph Theory in Python With David Amos
- The Real Python Podcast – Episode #211: Python Doesn't Round Numbers the Way You Might Think
- The Real Python Podcast – Episode #210: Creating a Guitar Synthesizer & Generating WAV Files With Python
- The Real Python Podcast – Episode #209: Python's Command-Line Utilities & Music Information Retrieval Tools
- The Real Python Podcast – Episode #208: Detecting Outliers in Your Data With Python
- The Real Python Podcast – Episode #207: Decomposing Software Problems & Avoiding the Trap of Clever Code
- The Real Python Podcast – Episode #206: Building Python Unit Tests & Exploring a Data Visualization Gallery
- The Real Python Podcast – Episode #205: Considering Accessibility & Assistive Tech as a Python Developer
- The Real Python Podcast – Episode #204: Querying OpenStreetMaps via API & Lazy Evaluation in Python
- The Real Python Podcast – Episode #203: Embarking on a Relaxed and Friendly Python Coding Journey
- The Real Python Podcast – Episode #202: Pydantic Data Validation & Python Web Security Practices
- The Real Python Podcast – Episode #201: Decoupling Systems to Get Closer to the Data
- The Real Python Podcast – Episode #200: Avoiding Error Culture and Getting Help Inside Python
- The Real Python Podcast – Episode #199: Leveraging Documents and Data to Create a Custom LLM Chatbot
- The Real Python Podcast – Episode #198: Build a Video Game With Python Turtle & Visualize Data in Seaborn
- The Real Python Podcast – Episode #197: Using Python in Bioinformatics and the Laboratory
- The Real Python Podcast – Episode #196: Exploring Duck Typing in Python & Dynamics of Monkey Patching
- The Real Python Podcast – Episode #195: Building a Healthy Developer Mindset While Learning Python
- The Real Python Podcast – Episode #194: Automate Tasks With Python & Building a Small Search Engine
- The Real Python Podcast – Episode #193: Wes McKinney on Improving the Data Stack & Composable Systems
- The Real Python Podcast – Episode #192: Practical Python Decorator Uses & Avoiding datetime Pitfalls
- The Real Python Podcast – Episode #191: Focusing on Data Science & Less on Engineering and Dependencies
- The Real Python Podcast – Episode #190: Great Starting Points for Contributing to Open Source
- The Real Python Podcast – Episode #189: Building a Python Debugger & Preparing for NumPy 2.0
- The Real Python Podcast – Episode #188: Measuring Bias, Toxicity, and Truthfulness in LLMs With Python
- The Real Python Podcast – Episode #187: Serializing Data With Python & Underscore Naming Conventions
- The Real Python Podcast – Episode #186: Exploring Python in Excel
- The Real Python Podcast – Episode #185: 2023 Real Python Tutorial & Video Course Wrap-Up
- The Real Python Podcast – Episode #184: PyCoder's Weekly 2023 Wrap Up
- The Real Python Podcast – Episode #183: Exploring Code Reviews in Python and Automating the Process
- The Real Python Podcast – Episode #182: Building a Python JSON Parser & Discussing Ideas for PEPs
- The Real Python Podcast – Episode #181: Computational Thinking & Learning Python During an AI Revolution
- The Real Python Podcast – Episode #180: Studying Python Software Architecture & Creating Lambda Expressions
- The Real Python Podcast – Episode #179: Improving Your Git Developer Experience in Python
- The Real Python Podcast – Episode #178: Guiding Scientific Python Library Development
- The Real Python Podcast – Episode #177: Welcoming PyPI's Safety & Security Engineer Mike Fiedler
- The Real Python Podcast – Episode #176: Building Python Best Practices and Fundamental Skills
- The Real Python Podcast – Episode #175: Exploring the New Features of Python 3.12
- The Real Python Podcast – Episode #174: Considering ChatGPT's Technical Review of a Programming Book
- The Real Python Podcast – Episode #173: Getting Involved in Open Source & Generating QR Codes With Python
- The Real Python Podcast – Episode #172: Measuring Multiple Facets of Python Performance With Scalene
- The Real Python Podcast – Episode #171: Making Each Line of Code Efficient & Python In Excel
- The Real Python Podcast – Episode #170: Finding the Right Coding Font for Programming in Python
- The Real Python Podcast – Episode #169: Improving Classification Models With XGBoost
- The Real Python Podcast – Episode #168: Common Python Stumbling Blocks & Quirky Behaviors
- The Real Python Podcast – Episode #167: Exploring pandas 2.0 & Targets for Apache Arrow
- The Real Python Podcast – Episode #166: Differentiating the Versions of Python & Unlocking IPython's Magic
- The Real Python Podcast – Episode #165: Leveraging the Features of Your Database With Postgres and Python
- The Real Python Podcast – Episode #164: Constructing Python Library APIs & Tackling Jinja Templating
- The Real Python Podcast – Episode #163: Python Crash Course & Learning Enough to Start Creating
- The Real Python Podcast – Episode #162: Exploring the Zen of Python & pandas Features for Finance
- The Real Python Podcast – Episode #161: Resources and Advice for Building CircuitPython Projects
- The Real Python Podcast – Episode #160: Inheriting a Large Python Code Base & Building a GUI With Kivy
- The Real Python Podcast – Episode #159: Volunteering, Organizing, and Finding a Python Community
- The Real Python Podcast – Episode #158: Building Python CI With Docker & Applying for a Hacker Initiative Grant
- The Real Python Podcast – Episode #157: Discussing Mojo & Improving Python Object-Oriented Programming
- The Real Python Podcast – Episode #156: Virtual Environment Structure & Surveying the Packaging Ecosystem
- The Real Python Podcast – Episode #155: Checking Project Dependencies & Python Dev Resource Collections
- The Real Python Podcast – Episode #154: Targeting WebAssembly Platforms & Distilling a Minimum Viable Python
- The Real Python Podcast – Episode #153: Seeking Faster Text Processing & Python's .__repr__() vs .__str__()
- The Real Python Podcast – Episode #152: Automate Processes and Distribute Python Tools With RPA and RCC
- The Real Python Podcast – Episode #151: Evaluating Python Packages & Celebrating 20 Years of PyCon US
- The Real Python Podcast – Episode #150: Lessons Learned From Four Years Programming With Python
- The Real Python Podcast – Episode #149: Coding With namedtuple & Python's Dynamic Superpowers
- The Real Python Podcast – Episode #148: Sharing Your Python App Across Platforms With BeeWare
- The Real Python Podcast – Episode #147: Django Deployment Strategies & Preparing for PyCascades 2023
- The Real Python Podcast – Episode #146: Using NumPy and Linear Algebra for Faster Python Code
- The Real Python Podcast – Episode #145: Creating a Python Wordle Clone & Testing Environments With Nox
- The Real Python Podcast – Episode #144: Wrangling Business Process Models With Python and SpiffWorkflow
- The Real Python Podcast – Episode #143: Create Interactive Maps & Geospatial Data Visualizations With Python
- The Real Python Podcast – Episode #142: Orchestrating Large and Small Projects With Apache Airflow
- The Real Python Podcast – Episode #141: Exploring Python With bpython & Formalizing f-String Grammar
- The Real Python Podcast – Episode #140: Speeding Up Your DataFrames With Polars
- The Real Python Podcast – Episode #139: Surveying Comprehension Constructs & Python Parallelism Infighting
- The Real Python Podcast – Episode #138: 2022 Real Python Tutorial & Video Course Wrap Up
- The Real Python Podcast – Episode #137: Start Using a Build System & Continuous Integration in Python
- The Real Python Podcast – Episode #136: Package Python Code With pyproject.toml & Listing Files With pathlib
- The Real Python Podcast – Episode #135: Preparing Data to Measure True Machine Learning Model Performance
- The Real Python Podcast – Episode #134: Building Python REST APIs With Flask & Structuring Pull Requests
- The Real Python Podcast – Episode #133: Moving Projects Away From Passwords With WebAuthn and Python
- The Real Python Podcast – Episode #132: Creating Tic-Tac-Toe With an AI Player & Shortcuts for Python Decorators
- The Real Python Podcast – Episode #131: Exploring the New Features of Python 3.11
- The Real Python Podcast – Episode #130: Fostering an Internal Python Community & Managing the 3.11 Release
- The Real Python Podcast – Episode #129: Using an Ellipsis in Python & Goals for CPython 3.12
- The Real Python Podcast – Episode #128: Using a Memory Profiler in Python & What It Can Teach You
- The Real Python Podcast – Episode #127: Explaining Access Control Using Python & Cautiously Handling Pickles
- The Real Python Podcast – Episode #126: Python as an Efficiency Tool for Non-Developers
- The Real Python Podcast – Episode #125: Improve Matplotlib With Style Sheets & Python Async for the Web
- The Real Python Podcast – Episode #124: Exploring Recursion in Python With Al Sweigart
- The Real Python Podcast – Episode #123: Creating a Python Code Completer & More Abstract Syntax Tree Projects
- The Real Python Podcast – Episode #122: Configuring a Coding Environment on Windows & Using TOML With Python
- The Real Python Podcast – Episode #121: Moving NLP Forward With Transformer Models and Attention
- The Real Python Podcast – Episode #120: Inspiring Young People to Learn Python With Mission Encodeable
- The Real Python Podcast – Episode #119: Natural Language Processing and How ML Models Understand Text
- The Real Python Podcast – Episode #118: Creating Documentation With MkDocs & When to Use a Python dict
- The Real Python Podcast – Episode #117: Measuring Python Code Quality, Simplicity, and Maintainability
- The Real Python Podcast – Episode #116: Exploring Functional Programming in Python With Bruce Eckel
- The Real Python Podcast – Episode #115: Digging Into PyScript & Preventing or Handling Python Errors
- The Real Python Podcast – Episode #114: Getting Started in Python Cybersecurity and Forensics
- The Real Python Podcast – Episode #113: Build Streamlit Data Science Dashboards & Verbose Regex f-Strings
- The Real Python Podcast – Episode #112: Managing Large Python Data Science Projects With Dask
- The Real Python Podcast – Episode #111: Questions for New Dependencies & Comparing Python Game Libraries
- The Real Python Podcast – Episode #110: Advantages of Protobuf for Serialization in Python
- The Real Python Podcast – Episode #109: Start Testing Your Python with doctest & Pagination in Django
- The Real Python Podcast – Episode #108: Run Python in a Browser With Pyodide & The Power of f-Strings
- The Real Python Podcast – Episode #107: Type-Safe ORM With Prisma Client & Real Python at PyCon US 2022
- The Real Python Podcast – Episode #106: Class Constructors & Pythonic Image Processing
- The Real Python Podcast – Episode #105: Creating Better Error Messages for Python 3.10 & 3.11
- The Real Python Podcast – Episode #104: Building a Hash Table in Python and Thoughtful REST API Design
- The Real Python Podcast – Episode #103: Becoming More Effective at Manipulating Data With Pandas
- The Real Python Podcast – Episode #102: Making Your Notebook Interactive and Using Python's Assert
- The Real Python Podcast – Episode #101: Tools for Setting Up Python on a New Machine
- The Real Python Podcast – Episode #100: Defining Optional Arguments and Moving Beyond "Beginner" Python
- The Real Python Podcast – Episode #99: OAuth 2 and Authentication Choices for Your Python Project
- The Real Python Podcast – Episode #98: Drawing Fractals With Python and Working With a Weather API
- The Real Python Podcast – Episode #97: Improving Your Django and Python Developer Experience
- The Real Python Podcast – Episode #96: Manipulating and Analyzing Audio in Python
- The Real Python Podcast – Episode #95: What Is a JIT and How Can Pyjion Speed Up Your Python?
- The Real Python Podcast – Episode #94: Designing for Users and Building a Social Network With Django
- The Real Python Podcast – Episode #93: Launching Python, Virtual Environments, and Locking Dependencies With Brett Cannon
- The Real Python Podcast – Episode #92: Continuing to Unravel Python's Syntactic Sugar With Brett Cannon
- The Real Python Podcast – Episode #91: 2021 Real Python Articles Wrap Up
- The Real Python Podcast – Episode #90: A Python Journey: Cyber Security, Automating AWS, and TDD
- The Real Python Podcast – Episode #89: Solving Advent of Code Puzzles With Python
- The Real Python Podcast – Episode #88: Discussing Type Hints, Protocols, and Ducks in Python
- The Real Python Podcast – Episode #87: Building a Content Aggregator and Working With RSS in Python
- The Real Python Podcast – Episode #86: The Legacy of OLPC and Charismatic Pitfalls in Teaching Programming
- The Real Python Podcast – Episode #85: Exploring Django Templates, Tags, and Filters
- The Real Python Podcast – Episode #84: Creating and Manipulating PDFs in Python With borb
- The Real Python Podcast – Episode #83: Ready to Publish Your Python Packages?
- The Real Python Podcast – Episode #82: Welcoming the CPython Developer in Residence
- The Real Python Podcast – Episode #81: Exploring the New Features of Python 3.10
- The Real Python Podcast – Episode #80: Make Your Python App Interactive With a Text User Interface (TUI)
- The Real Python Podcast – Episode #79: Measuring Your Python Learning Progress
- The Real Python Podcast – Episode #78: Learning Python Through Illustrated Stories
- The Real Python Podcast – Episode #77: Advantages of Completing Small Python Projects
- The Real Python Podcast – Episode #76: Harnessing Python's math Module and Exposing Practical Pandas Functions
- The Real Python Podcast – Episode #75: Building With CircuitPython & Constraints of Python for Microcontrollers
- The Real Python Podcast – Episode #74: Python's Assignment Expressions and Fixing a Botched Release to PyPI
- The Real Python Podcast – Episode #73: Supporting Python Open Source Projects and Maintainers
- The Real Python Podcast – Episode #72: Starting With FastAPI and Examining Python's Import System
- The Real Python Podcast – Episode #71: Start Using a Debugger With Your Python Code
- The Real Python Podcast – Episode #70: What Can You Do With Python and Counting Objects Using "Counter"
- The Real Python Podcast – Episode #69: Planning a Faster Future at the Python Language Summit
- The Real Python Podcast – Episode #68: Exploring the functools Module and Complex Numbers in Python
- The Real Python Podcast – Episode #67: Securing Your Python Software Supply Chain With Dustin Ingram
- The Real Python Podcast – Episode #66: Practicing Python With CSV Files and Extracting Values With "filter()"
- The Real Python Podcast – Episode #65: Expanding the International Python Community With the PSF
- The Real Python Podcast – Episode #64: Detecting Deforestation With Python & Using GraphQL With Django and Vue
- The Real Python Podcast – Episode #63: Create Web Applications Using Only Python With Anvil
- The Real Python Podcast – Episode #62: Selecting the Ideal Data Structure & Unravelling Python's "pass" and "with"
- The Real Python Podcast – Episode #61: Scaling Data Science and Machine Learning Infrastructure Like Netflix
- The Real Python Podcast – Episode #60: Building a Platform Game With Arcade and Covering Python News Monthly
- The Real Python Podcast – Episode #59: Organizing and Restructuring DjangoCon Europe 2021
- The Real Python Podcast – Episode #58: Podcast Rewind With Guest Highlights for 2020-2021
- The Real Python Podcast – Episode #57: Taking the Next Step in Python Game Development
- The Real Python Podcast – Episode #56: OrderedDict vs dict and Object Oriented Programming in Python vs Java
- The Real Python Podcast – Episode #55: Getting Started With Refactoring Your Python Code
- The Real Python Podcast – Episode #54: Building a Neural Network and How to Write Tests in Python
- The Real Python Podcast – Episode #53: Improving the Learning Experience on Real Python
- The Real Python Podcast – Episode #52: Connecting to MongoDB and Updates on the Python Packaging Landscape
- The Real Python Podcast – Episode #51: Navigating Options for Deploying Your Python Application
- The Real Python Podcast – Episode #50: Consuming APIs With Python and Building Microservices With gRPC
- The Real Python Podcast – Episode #49: The Challenges of Developing Into a Python Professional
- The Real Python Podcast – Episode #48: Stochastic Gradient Descent and Deploying Your Python Scripts on the Web
- The Real Python Podcast – Episode #47: Unraveling Python's Syntax to Its Core With Brett Cannon
- The Real Python Podcast – Episode #46: C for Python Developers and Data Visualization With Dash
- The Real Python Podcast – Episode #45: Processing Images in Python With Pillow
- The Real Python Podcast – Episode #44: Creating an Interactive Online Python Conference for PyCascades 2021
- The Real Python Podcast – Episode #43: Deep Reinforcement Learning in a Notebook With Jupylet + Gaming and Synthesis
- The Real Python Podcast – Episode #42: What Is Data Engineering and Researching 10 Million Jupyter Notebooks
- The Real Python Podcast – Episode #41: 2020 Real Python Articles in Review
- The Real Python Podcast – Episode #40: How Python Manages Memory and Creating Arrays With np.linspace
- The Real Python Podcast – Episode #39: Generators, Coroutines, and Learning Python Through Exercises
- The Real Python Podcast – Episode #38: Looping With enumerate() and Python GUIs With PyQt
- The Real Python Podcast – Episode #37: Teaching Python and Finding Resources for Students
- The Real Python Podcast – Episode #36: Sentiment Analysis, Fourier Transforms, and More Python Data Science
- The Real Python Podcast – Episode #35: Security and Authorization in Your Python Web Applications
- The Real Python Podcast – Episode #34: The Python Modulo Operator & Managing Data With SQLite and SQLAlchemy
- The Real Python Podcast – Episode #33: Going Beyond the Basic Stuff With Python and Al Sweigart
- The Real Python Podcast – Episode #32: Our New "Python Basics" Book & Filling the Gaps in Your Learning Path
- The Real Python Podcast – Episode #31: Python Return Statement Best Practices and Working With the map() Function
- The Real Python Podcast – Episode #30: Exploring the New Features of Python 3.9
- The Real Python Podcast – Episode #29: Resolving Package Dependencies With the New Version of Pip
- The Real Python Podcast – Episode #28: Using Pylance to Write Better Python Inside of Visual Studio Code
- The Real Python Podcast – Episode #27: Preparing for an Interview With Python Practice Problems
- The Real Python Podcast – Episode #26: 5 Years Podcasting Python With Michael Kennedy: Growth, GIL, Async, and More
- The Real Python Podcast – Episode #25: Data Version Control in Python and Real Python Video Transcripts
- The Real Python Podcast – Episode #24: Options for Packaging Your Python Application: Wheels, Docker, and More
- The Real Python Podcast – Episode #23: Python Wheels and Pass by Reference in Python
- The Real Python Podcast – Episode #22: Create Cross-Platform Python GUI Apps With BeeWare
- The Real Python Podcast – Episode #21: Exploring K-means Clustering and Building a Gradebook With Pandas
- The Real Python Podcast – Episode #20: Building PDFs in Python with ReportLab
- The Real Python Podcast – Episode #19: Advanced Python Import Techniques and Managing Users in Django
- The Real Python Podcast – Episode #18: Ten Years of Flask: Conversation With Creator Armin Ronacher
- The Real Python Podcast – Episode #17: Linear Programming, PySimpleGUI, and More
- The Real Python Podcast – Episode #16: Thinking in Pandas: Python Data Analysis the Right Way
- The Real Python Podcast – Episode #15: Python Regular Expressions, Views vs Copies in Pandas, and More
- The Real Python Podcast – Episode #14: Going Serverless with Python
- The Real Python Podcast – Episode #13: PDFs in Python and Projects on the Raspberry Pi
- The Real Python Podcast – Episode #12: Web Scraping in Python: Tools, Techniques, and Legality
- The Real Python Podcast – Episode #11: Advice on Getting Started With Testing in Python
- The Real Python Podcast – Episode #10: Python Job Hunting in a Pandemic
- The Real Python Podcast – Episode #9: Leveling Up Your Python Literacy and Finding Python Projects to Study
- The Real Python Podcast – Episode #8: Docker + Python for Data Science and Machine Learning
- The Real Python Podcast – Episode #7: AsyncIO + Music, Origins of Black, and Managing Python Releases
- The Real Python Podcast – Episode #6: Python REST APIs and The Well-Grounded Python Developer
- The Real Python Podcast – Episode #5: Exploring CircuitPython
- The Real Python Podcast – Episode #4: Learning Python Through Errors
- The Real Python Podcast – Episode #3: Effective Python and Python at Google Scale
- The Real Python Podcast – Episode #2: Learn Python Skills While Creating Games
- The Real Python Podcast – Episode #1: Python Decorators and Writing for Real Python
- The Real Python Podcast – Episode #0: About the Show