

The Real Python Podcast
Real Python
A weekly Python podcast hosted by Christopher Bailey with interviews, coding tips, and conversation with guests from the Python community.
The show covers a wide range of topics including Python programming best practices, career tips, and related software development topics. Join us every Friday morning to hear what's new in the world of Python programming and become a more effective Pythonista.
The show covers a wide range of topics including Python programming best practices, career tips, and related software development topics. Join us every Friday morning to hear what's new in the world of Python programming and become a more effective Pythonista.
Episodes
Mentioned books

Mar 3, 2023 • 1h 8min
Django Deployment Strategies & Preparing for PyCascades 2023
Have you decided how you’re going to deploy your Django project? Should you use a VPS or a PaaS? Christopher Trudeau is back this week, bringing another batch of PyCoder’s Weekly articles and projects. We also have organizers from PyCascades to share details about this year’s hybrid in-person and virtual conference.
Christopher shares an article about selecting an appropriate Django project deployment strategy. The guide compares VPS (virtual private server) and PaaS (platform as a service) systems. He also covers hosting providers for each and highlights potential pitfalls.
We share several other articles and projects from the Python community, including a news update, what’s new in SQLAlchemy 2.0, how to flush the output of the Python print function, the dangers behind image resizing for machine learning, a project that visualizes pathfinding algorithms, and a runtime executor project.
We also have three special guests from PyCascades 2023 to dig into the details of the conference. Conference chair Eliza Sarobhasa is CTO at Women Who Drone and Leadership Fellow (Python Track) & Python Developer Advocate at Women Who Code. Sprints chair Chethana Gopinath is a Software Engineer at realtor.com and a Senior Lead at Women Who Code Python. Speaker Support Chair Jolene Wong is a Senior Software Engineer at Cisco based in Vancouver. We discuss hosting a hybrid conference, participating in open-source sprints, and finding a local Python community.
Course Spotlight: The Python print() Function: Go Beyond the Basics
In this step-by-step course, you’ll learn about the print() function in Python and discover some of its lesser-known features. Avoid common mistakes, take your “hello world” to the next level, and know when to use a better alternative.
Topics:
00:00:00 – Introduction
00:02:47 – Django 4.2 beta 1 released
00:03:04 – What’s New in SQLAlchemy 2.0?
00:06:42 – How to Flush the Output of the Python Print Function
00:14:30 – The Essential Django Deployment Guide
00:21:37 – Sponsor: Snyk
00:22:30 – The Dangers Behind Image Resizing
00:29:40 – Pathfinding-Visualizer: Visualize Pathfinding With Pygame
00:32:40 – rtx: Runtime Executor (asdf Rust Clone)
00:36:19 – Video Course Spotlight
00:37:31 – PyCascades 2023 Details
00:38:53 – Hybrid conference
00:41:11 – How did Chethana get involved?
00:42:30 – Open-source sprints
00:45:19 – How did Jolene get involved?
00:46:31 – How did Eliza get involved?
00:50:21 – Venue details
00:52:32 – Scheduled talks
00:56:13 – Conference sponsors
00:57:48 – Advice for attendees
01:00:46 – Tickets and virtual platform
01:03:01 – What are you excited about in the world of Python?
01:06:13 – Thanks and goodbye
News:
Django 4.2 beta 1 released | Weblog | Django
SQLAlchemy 2.0 Released
Show Links:
What’s New in SQLAlchemy 2.0? – SQLAlchemy 2.0 was launched in January. This article reviews the latest changes, whether it is worth the upgrade, and how to go about it.
How to Flush the Output of the Python Print Function – In this tutorial, you’ll learn how to flush the output of Python’s print function. You’ll explore output stream buffering in Python using code examples and learn that output streams are block-buffered by default, and that print() with its default arguments executes line-buffered when interactive.
The Essential Django Deployment Guide – Going from “it works on my machine” to deploying to the public can be a daunting task. This guide details the choices between VPS and PaaS systems, how to choose, what the options are, and what you need to know to get your Django code live.
The Dangers Behind Image Resizing – When training an ML model on image data you likely want smaller, consistently sized images. That means image processing in your pipeline, but the expectation that image resizing is the same across libraries can cause unforeseen problems.
Projects:
Pathfinding-Visualizer: Visualize Pathfinding With Pygame
rtx: Runtime Executor (asdf Rust Clone)
PyCascades Links:
Home - PyCascades 2023
The Team - PyCascades 2023
Schedule - PyCascades 2023
Sprints - PyCascades 2023
PyCascades 2023 - Sprints Sign Up Form
COVID Policy - PyCascades 2023
Venueless - PyCascades 2023
Become A Sponsor - PyCascades 2023
PyCascades - YouTube
Episode #44: Creating an Interactive Online Python Conference for PyCascades 2021 – The Real Python Podcast
Additional Links:
File Object - Glossary - Python Documentation
The Python print() Function: Go Beyond the Basics – Real Python
functools — Higher-order functions and operations on callable objects — Python 3.11.2 documentation
Python - Women Who Code
WWCodePython - Tiktok Creator & Bio Links - Beacons
PyLadies – Women Who Love Coding in Python
PyLadies Vancouver (Vancouver, BC) | Meetup
Level up your Python skills with our expert-led courses:
Deploy a Django App With Gunicorn and Nginx
The Python print() Function: Go Beyond the Basics
SQLite and SQLAlchemy in Python: Moving Your Data Beyond Flat Files
Support the podcast & join our community of Pythonistas

12 snips
Feb 24, 2023 • 1h 9min
Using NumPy and Linear Algebra for Faster Python Code
Are you still using loops and lists to process your data in Python? Have you heard of a Python library with optimized data structures and built-in operations that can speed up your data science code? This week on the show, Jodie Burchell, developer advocate for data science at JetBrains, returns to share secrets for harnessing linear algebra and NumPy for your projects.
Jodie details how most people begin their data science journey using loops to iterate over values and apply operations sequentially. We talk about how loops are friendly for beginners, being clear to read and easy to debug, but unfortunately don’t scale well, especially with large amounts of data.
Jodie shares some of the basics of linear algebra and how to organize data into vectors. We talk about how the NumPy library leverages those concepts to improve data processing. We discuss how the library includes operations for vector and matrix addition and subtraction, and why these operations are more efficient than loops. We also cover how NumPy stores arrays in memory and when working with them is faster vs when it’s not.
Course Spotlight: Data Cleaning With pandas and NumPy
In this video course, you’ll learn how to clean up messy data using pandas and NumPy. You’ll become equipped to deal with a range of problems, such as missing values, inconsistent formatting, malformed records, and nonsensical outliers.
Topics:
00:00:00 – Introduction
00:02:35 – Vectorize all the things! - PyCon UK 2022 Talk
00:06:39 – Becoming familiar with linear algebra
00:09:05 – Beginners start with loops
00:11:25 – Starting with basic linear algebra
00:12:25 – The basic unit of a vector
00:18:06 – NumPy representing vectors in Python
00:23:25 – Sponsor: InfluxDB
00:24:13 – Block management
00:25:54 – Replacing a loop with vector-based operations
00:34:06 – NumPy broadcasting
00:38:52 – Approximating nearest neighbors
00:43:49 – Video Course Spotlight
00:45:15 – Solving the problem
00:46:44 – Getting rid of nested loops
00:48:54 – A peek under the hood
00:53:28 – How arrays vs lists are stored in memory
01:00:24 – Considering a GPU
01:03:37 – Real Python resources on the subject
01:04:08 – Upcoming talks and conferences
01:07:31 – Thanks and goodbye
Show Links:
Vectorize all the things! How basic linear algebra can speed up your data science code - YouTube
Introduction to Linear Algebra, 5th Edition
Linear Algebra - Mathematics - MIT OpenCourseWare
Linear Algebra and Learning from Data
Linear Algebra in Python: Matrix Inverses and Least Squares
NumPy: the absolute basics for beginners - NumPy Manual
Broadcasting — NumPy v1.24 Manual
spotify/annoy: Approximate Nearest Neighbors in C++/Python optimized
Look Ma, No For-Loops: Array Programming With NumPy – Real Python
NumPy Tutorial: Your First Steps Into Data Science in Python – Real Python
How to Iterate Over Rows in pandas, and Why You Shouldn’t – Real Python
RADAR: Thrive in the era of data - DataCamp
Vectorize all the things! Using linear algebra and NumPy to make your Python code lightning fast. - Python Web Conference 2023
Jodie Burchell - PyCon US 2023
Jodie Burchell’s Blog - Standard error
Jodie Burchell 🇦🇺🇩🇪 (@t_redactyl) - Twitter
Jodie Burchell 🇦🇺🇩🇪 (@t_redactyl@fosstodon.org) - Fosstodon
JetBrains: Essential tools for software developers and teams
Level up your Python skills with our expert-led courses:
Data Cleaning With pandas and NumPy
Histogram Plotting in Python: NumPy, Matplotlib, Pandas & Seaborn
Using NumPy's np.arange() Effectively
Support the podcast & join our community of Pythonistas

Feb 17, 2023 • 59min
Creating a Python Wordle Clone & Testing Environments With Nox
Would you like to practice your Python skills while building a challenging word game? Have you been wanting to learn more about creating command-line interfaces and making them colorful and interactive? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We share a recent Real Python step-by-step project about creating a clone of Wordle. In the project, you’ll practice building a terminal application, validating user input, and refactoring code into functions.
Christopher shares an article that compares two popular testing tools, Nox and Tox. He discusses how each framework approaches test environment configuration and why the author leans toward using Nox’s Python decorator–based format.
We share several other articles and projects from the Python community, including a news update, a guide to trying out code and ideas quickly with the Python REPL, a PEP about requiring virtual environments by default, a discussion about lessons learned in twenty years as a software engineer, a project for a spreadsheet GUI inside of JupyterLab notebooks, and adding C-style for loops to Python.
Course Spotlight: Getters and Setters in Python
In this video course, you’ll learn what getter and setter methods are, how Python properties are preferred over getters and setters when dealing with attribute access and mutation, and when to use getter and setter methods instead of properties in Python.
Topics:
00:00:00 – Introduction
00:02:21 – Django Security Releases Issued
00:02:43 – PSF Is Hiring a Security Developer-in-Residence
00:03:44 – Python 3.11.2, Python 3.10.10 and 3.12.0 alpha 5 are available
00:04:02 – Build a Wordle Clone With Python and Rich
00:10:05 – Why I Like Nox
00:16:44 – Sponsor: Anaconda Cloud
00:17:26 – PEP 704: Require Virtual Environments by Default
00:27:17 – The Python Standard REPL: Try Out Code and Ideas Quickly
00:33:08 – Video Course Spotlight
00:34:35 – 20 Things I’ve Learned in My 20 Years as a Software Engineer
00:47:50 – Mito: A Spreadsheet Inside Your JupyterLab Notebooks
00:51:37 – How I Added C-Style for-Loops to Python
00:58:08 – Thanks and goodbye
News:
Django Security Releases Issued: 4.1.6, 4.0.9, and 3.2.17
PSF Is Hiring a Security Developer-in-Residence
Python Insider: Python 3.11.2, Python 3.10.10 and 3.12.0 alpha 5 are available
Show Links:
Build a Wordle Clone With Python and Rich – In this step-by-step project, you’ll build your own Wordle clone with Python. Your game will run in the terminal, and you’ll use Rich to ensure your word-guessing app looks good. Learn how to build a command-line application from scratch and then challenge your friends to a wordly competition!
Why I Like Nox – Both Nox and Tox are multi-environment testing tools. This opinion piece by Hynek compares and contrasts them and explains why he is increasingly using Nox.
PEP 704: Require Virtual Environments by Default
The Python Standard REPL: Try Out Code and Ideas Quickly – In this tutorial, you’ll learn how to use the Python standard REPL (Read-Eval-Print Loop) to run your code interactively. This tool will allow you to test new ideas, explore and experiment with new tools and libraries, refactor and debug your code, try out examples, and more.
Discussion
20 Things I’ve Learned in My 20 Years as a Software Engineer – Justin writes a list of things he’s learned over his past twenty years in development. He starts by stating how context is important and that his lessons are from small teams that emphasize productivity and are tool agnostic.
The 10x Programmer Myth - Simple Thread
Projects:
Mito: A Spreadsheet Inside Your JupyterLab Notebooks
How I Added C-Style for-Loops to Python – Ever wanted a C-style for loop in Python? No? Well, you can have one anyway. See how Tushar implemented with for (i := var(0), i < 10, i + 2):
Additional Links:
Alpha-Omega - Open Source Security Foundation
Welcome to Nox - Nox 2022.11.21 documentation
Classifying Python Virtual Environment Workflows
PEP 704 - Require virtual environments by default for package installers - Discourse on Python.org
Creating Virtual Environments - Python Packaging User Guide
Python Virtual Environments: A Primer – Real Python
JupyterLab for an Enhanced Notebook Experience
Level up your Python skills with our expert-led courses:
Intro to Object-Oriented Programming (OOP) in Python
Python Basics: Object-Oriented Programming
Getters and Setters in Python
Support the podcast & join our community of Pythonistas

5 snips
Feb 10, 2023 • 52min
Wrangling Business Process Models With Python and SpiffWorkflow
Can you describe your business processes with flowcharts? What if you could define the steps in a standard notation and implement the workflows in pure Python? This week on the show, Dan Funk from Sartography is here to discuss SpiffWorkflow.
SpiffWorkflow is a Python tool for translating Business Process Model and Notation (BPMN) diagrams into a workflow engine. You can manipulate this visual chain of events to suit your team’s business requirements. Individual events in the workflow can contain blocks or scripts of Python code to be executed.
We discuss the concept of low-code software tools. Dan also talks about how SpiffWorkflow aims at getting non-developers within an organization involved in development.
Course Spotlight: Cool New Features in Python 3.11 – Real Python
In this video course, you’ll explore what Python 3.11 brings to the table. You’ll learn how Python 3.11 is the fastest and most user-friendly version of CPython yet, and learn about improvements to the typing system and to the asynchronous features of Python.
Topics:
00:00:00 – Introduction
00:02:14 – What is SpiffWorkflow?
00:03:12 – What is BPMN?
00:06:29 – What did you need to add to the project?
00:07:12 – What are the components of a diagram?
00:12:42 – Examples of workflow
00:13:54 – Sponsor: TelemetryHub
00:14:29 – What types of industries use BPMN?
00:18:02 – Decision Model and Notation (DMN)
00:19:34 – What is low-code?
00:27:02 – How could someone get involved?
00:28:02 – How do you host a workflow?
00:29:43 – Video Course Spotlight
00:31:05 – What has the project taught you as a developer?
00:37:29 – Empowering more members of the organization
00:42:07 – Project direction for the next year
00:42:51 – Where to start with SpiffWorkflow?
00:43:15 – What are you excited about in the world of Python?
00:45:59 – What do you want to learn next?
00:51:06 – Thanks and goodbye
Show Links:
SpiffWorkflow
Overview SpiffWorkflow 1.2.1 documentation
SpiffWorkflow: A powerful workflow engine implemented in pure Python - GitHub
Sartography
Business Process Model and Notation - Wikipedia
Decision Model and Notation™ (DMN™) | Object Management Group
Web-based tooling for BPMN, DMN, CMMN, and Forms | bpmn.io
Creating a Low-Code Business Process Execution Platform With Python, BPMN, and DMN - IEEE Software
The Low Code Wall, SpiffWorkflow
SpiffArena, SpiffWorkflow
Install SpiffArena then build and run your first diagram - YouTube
MindTrails - University of Virginia
Practices of the Python Pro
Episode #49: The Challenges of Developing Into a Python Professional – The Real Python Podcast
PEP 678: Exceptions can be enriched with notes - Python 3.11.1 documentation
Building a Ship in a Bottle. : 14 Steps (with Pictures) - Instructables
Status - Private, Secure Communication
Dan Funk - LinkedIn
SpiffWorkflow (@SpiffWorkflow) - Twitter
Level up your Python skills with our expert-led courses:
Building Python Project Documentation With MkDocs
Cool New Features in Python 3.11
Editing Excel Spreadsheets in Python With openpyxl
Support the podcast & join our community of Pythonistas

Feb 3, 2023 • 1h 3min
Create Interactive Maps & Geospatial Data Visualizations With Python
Would you like to quickly add data to a map with Python? Have you wanted to create beautiful interactive maps and export them as a stand-alone static web page? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We share a recent Real Python tutorial about using Python Folium to create geospatial data visualizations. Folium harnesses the power of the JavaScript library Leaflet. The project shares how to combine this graphical power with Python’s data-wrangling strength.
Christopher shares a recent Python Enhancement Proposal (PEP) about the Global Interpreter Lock (GIL) in CPython. The PEP proposes a change to the build process that implements a flag for optionally building a GIL-less interpreter.
We share several other articles and projects from the Python community, including a news update, a YAML document from hell, a set of logging practices to follow, a discussion about the discourse surrounding the recent Python packaging user survey, a modern Python UI library based on Tkinter, and a lightweight tool kit for bounding boxes.
Course Spotlight: Everyday Project Packaging With pyproject.toml
In this Code Conversation video course, you’ll learn how to package your everyday projects with pyproject.toml. Playing on the same team as the import system means you can call your project from anywhere, ensure consistent imports, and have one file that’ll work for many build systems.
Topics:
00:00:00 – Introduction
00:02:33 – Bleach 6.0.0 release and deprecation
00:05:03 – Python Folium: Create Web Maps From Your Data
00:10:37 – PEP 703: Making the GIL Optional in CPython
00:15:36 – Sponsor: Influxdata
00:16:24 – The YAML Document From Hell
00:27:53 – Logging Practices I Follow
00:32:08 – How to improve Python packaging
00:36:55 – Video Course Spotlight
00:38:25 – Thoughts on the Python packaging ecosystem
00:58:16 – CustomTkinter: Python UI library Based on Tkinter
01:00:16 – pybboxes: Lightweight Tool Kit for Bounding Boxes
01:01:36 – Thanks and goodbye
News:
Bleach 6.0.0 release and deprecation - Will’s Blog
Show Links:
Python Folium: Create Web Maps From Your Data – You’ll learn how to create web maps from data using Folium. The package combines Python’s data-wrangling strengths with the data-visualization power of the JavaScript library Leaflet. In this tutorial, you’ll create and style a choropleth world map that shows the ecological footprint per country.
PEP 703: Making the GIL Optional in CPython – This PEP proposes changes to the CPython build process that would allow you to build a GIL-less interpreter. This kind of interpreter would not be ABI compatible with the GIL-based one, and the programmer would become responsible for some locking situations in C-extensions. If implemented, this would lead the way to being able to operate without the GIL in cases where backward-compatibility issues aren’t important.
The yaml Document From Hell – As a data format, YAML is extremely complicated and it has many footguns. In this post, Ruud explains some of those pitfalls by means of an example and suggests a few simpler and safer YAML alternatives.
Logging Practices I Follow – “No matter what kind of software you’re developing, you most definitely leverage logging to some extent, probably every single day.” This article outlines good cross-language logging practices, making it easier to find bugs and understand what has happened in your software.
Discussion:
How to improve Python packaging, or why fourteen tools are at least twelve too many - Chris Warrick
Thoughts on the Python packaging ecosystem - Pradyun Gedam
Python Packaging User Survey - Results PDF
Python Packaging Strategy Discussion - Part 1 - Packaging - Discussions on Python.org
Thoughts on the Python packaging ecosystem | Hacker News
Stargirl: “So You Want to Solve Python Packaging” - Fosstodon
xkcd: Standards
Projects:
CustomTkinter: Python UI Library Based on Tkinter
pybboxes: Lightweight Tool Kit for Bounding Boxes
Additional Links:
PEP 554 – Multiple Interpreters in the Stdlib - peps.python.org
YAML: The Missing Battery in Python – Real Python
Python and TOML: New Best Friends – Real Python
PEP 665 – A file format to list Python dependencies for reproducibility of an application - peps.python.org
tkinter — Python interface to Tcl/Tk — Python 3.11.1 docs
Python GUI Programming With Tkinter – Real Python
Level up your Python skills with our expert-led courses:
Logging Inside Python
Everyday Project Packaging With pyproject.toml
Graph Your Data With Python and ggplot
Support the podcast & join our community of Pythonistas

Jan 27, 2023 • 54min
Orchestrating Large and Small Projects With Apache Airflow
Have you worked on a project that needed an orchestration tool? How do you define the workflow of an entire data pipeline or a messaging system with Python? This week on the show, Calvin Hendryx-Parker is back to talk about using Apache Airflow and orchestrating Python projects.
Calvin is the co-founder and CTO of Six Feet Up and a Python Web Conference co-organizer. He’s recently been working on a massive project that requires thousands of jobs involving transferring and transforming data. Through his research into orchestration systems, he found Apache Airflow.
Airflow is an open-source tool to define, schedule, and monitor workflows. The platform is pure Python and integrates with a wide variety of services. We discuss how workflows are defined by creating directed acyclic graphs (DAG).
Calvin talks about how a recent project outgrew the system and how his team built a clever solution using Python. We also discuss the upcoming Python Web Conference and what virtual attendees can expect.
Course Spotlight: Python Basics: Object-Oriented Programming
In this video course, you’ll get to know OOP, or object-oriented programming. You’ll learn how to create a class, use classes to create new objects, and instantiate classes with attributes.
Topics:
00:00:00 – Introduction
00:02:24 – Describing the large data pipeline
00:04:38 – What format was the data in?
00:06:04 – Was the format of the data changed for storage?
00:09:34 – Data engineering and describing sources and targets
00:11:29 – Apache Airflow orchestration and hitting limitations
00:18:12 – Sponsor: CData Software
00:18:54 – DAG: Directed acyclic graphs
00:22:29 – Streaming data and other tool choices
00:25:38 – Overcoming DAG Factory limitations
00:31:49 – Another industry example for Airflow
00:34:24 – Finding solutions as a consultancy
00:35:12 – Is there a minimum-size project for Airflow?
00:37:37 – Django under the hood
00:38:31 – Video Course Spotlight
00:39:58 – The Python Web Conference 2023
00:44:24 – Do you have any upcoming conference talks?
00:45:53 – How can people follow your work online?
00:46:52 – IndyPy talk by Mariatta Wijaya
00:48:01 – What are you excited about in the world of Python?
00:51:45 – What do you want to learn next?
00:53:22 – Thanks and goodbye
Show Links:
Apache Airflow - Documentation
Too Big for DAG Factories? — Six Feet Up
Directed acyclic graph - Wikipedia
DAGs — Airflow Documentation
Dynamically generating DAGs in Airflow - Astronomer Documentation
Data Lakehouse Architecture and AI Company - Databricks
Episode #10: Python Job Hunting in a Pandemic – The Real Python Podcast
Episode #124: Exploring Recursion in Python With Al Sweigart – The Real Python Podcast
The Recursive Book of Recursion
Episode #61: Scaling Data Science and Machine Learning Infrastructure Like Netflix – The Real Python Podcast
IndyPy — Indiana Python User Group
Contributing to Python - Mariatta Wijaya - Python Core Developer - YouTube
Home Assistant
Arturia - MicroFreak
Arturia - Pigments
CalvinHP (@calvinhp@fosstodon.org) - Fosstodon
calvinhp - Twitter
Six Feet Up - Blog
Python Web Conference 2023
Level up your Python skills with our expert-led courses:
Data Cleaning With pandas and NumPy
Python Basics: Object-Oriented Programming
Intro to Object-Oriented Programming (OOP) in Python
Support the podcast & join our community of Pythonistas

Jan 20, 2023 • 56min
Exploring Python With bpython & Formalizing f-String Grammar
Have you used the Python Read-Eval-Print Loop (REPL) to explore the language and learn about how it operates? Would it help if it provided syntax highlighting, definitions, and code completion and behaved more like an IDE? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We discuss the drop-in REPL replacement bpython. bpython enhances the interactivity of a Python REPL session. It’s also a powerful teaching tool for instructors and students to experiment with and explore Python code.
Christopher shares a recent Python Enhancement Proposal (PEP) about formalizing the grammar for f-strings. The PEP describes a reduction in the underlying parser code complexity and provides for future features like comments in multiline f-strings.
We share several other articles and projects from the Python community, including a news roundup, a collection of surveys to classify Python virtual environment workflows, a course about context managers and Python’s with statement, a discussion about microfeatures that we would like to see adopted in Python, a Python terminal music player, and an infinite array powered by AI.
Course Spotlight: Context Managers and Python’s with Statement
In this video course, you’ll learn what the Python with statement is and how to use it with existing context managers. You’ll also learn how to create your own context managers.
Topics:
00:00:00 – Introduction
00:02:21 – Pillow 9.4.0 Released
00:02:47 – Django Bugfix Release: 4.1.5
00:02:56 – Plone 6.0 Released
00:03:16 – PyCon Italia 2023
00:03:54 – Discover bpython: A Python REPL With IDE-Like Features
00:13:55 – PEP 701: Syntactic Formalization of f-Strings
00:17:07 – Sponsor: Influx Data
00:17:57 – Classifying Python Virtual Environment Workflows
00:30:26 – Context Managers and Python’s with Statement
00:36:32 – Video Course Spotlight
00:37:47 – Microfeatures I’d Like to See in More Languages
00:49:34 – Python Terminal Music Player
00:51:19 – Infinite AI Array
00:55:05 – Thanks and goodbye
News:
Pillow 9.4.0 Released
Django Bugfix Release: 4.1.5
Plone 6.0 Released
PyCon Italia 2023
Show Links:
Discover bpython: A Python REPL With IDE-Like Features – In this tutorial, you’ll learn about bpython, an alternative Python REPL that brings code suggestions and many other IDE-like features to the terminal. Once you discover how much bpython can improve your productivity, you’ll never want to return to using the vanilla Python REPL again.
PEP 701: Syntactic Formalization of f-Strings – This Python Enhancement Proposal describes the formalization of a grammar for f-strings, allowing a reduction in the underlying parser code complexity and providing future features like comments in multiline f-strings.
Classifying Python Virtual Environment Workflows – This article discusses the various ways of creating and managing Python virtual environments, including what kinds of tools you could use. It categorizes the different styles and describes how the choices that you make affect your workflow.
Context Managers and Python’s with Statement – In this video course, you’ll learn what the Python with statement is and how to use it with existing context managers. You’ll also learn how to create your own context managers.
Microfeatures I’d Like to See in More Languages – Some language features are intrinsic to the language. Others are syntactic sugar that other programming languages could easily borrow. This opinion piece from Hillel highlights some features that the mainstream should steal from more obscure languages. Two Python features that he’d like to see in more languages are chained evaluations (2 <= x < 10) and numbers with separators (1000000 == 1_000_000).
Projects:
Python Terminal Music Player
Infinite AI Array – Learn about an insane library containing special lists and dicts so that any missed calls automatically go to GPT3 and add a predictive value in its place.
Additional Links:
Christopher Trudeau’s - Act function for virtual environments
Level up your Python skills with our expert-led courses:
Working With Python Virtual Environments
Python 3's F-Strings: An Improved String Formatting Syntax
Context Managers and Using Python's with Statement
Support the podcast & join our community of Pythonistas

6 snips
Jan 13, 2023 • 58min
Speeding Up Your DataFrames With Polars
How can you get more performance from your existing data science infrastructure? What if a DataFrame library could take advantage of your machine’s available cores and provide built-in methods for handling larger-than-RAM datasets? This week on the show, Liam Brannigan is here to discuss Polars.
Liam is an experienced data scientist working in finance, technology, and environmental analysis. He’s recently started contributing to the documentation for Polars and developing a training course for the library.
We talk about the library’s overall speed and lack of additional dependencies. Liam explains the advantages of lazy vs eager mode and which to choose when performing data exploration or attempting to load a dataset larger than your RAM.
We also discuss potential barriers to switching to Polars from a pandas workflow. Across our conversation, we explore several other libraries and technologies, including Apache Arrow, DuckDB, query optimization, and the “rustification” of Python tools.
Course Spotlight: Graph Your Data With Python and ggplot
In this course, you’ll learn how to use ggplot in Python to build data visualizations with plotnine. You’ll discover what a grammar of graphics is and how it can help you create plots in a very concise and consistent way.
Show Topics:
00:00:00 – Introduction
00:02:06 – Liam’s background and intro to Polars
00:03:37 – Hurdles to switching to Polars
00:05:23 – Creating training resources
00:08:15 – No index
00:09:46 – Data science 2025 predictions
00:12:02 – Contributions to Polars
00:15:07 – Eager vs lazy mode & query optimization
00:19:25 – Sponsor: Anaconda Nucleus
00:20:00 – Apache Arrow and parquet
00:24:43 – DuckDB and column orientation
00:29:27 – The “rustification” of libraries
00:34:49 – Video Course Spotlight
00:36:16 – GPUs and memory requirements
00:45:49 – No additional library requirements
00:47:37 – Development of the ecosystem
00:51:33 – Chaining operations
00:53:39 – How can people follow your work?
00:54:51 – What are you excited about in the world of Python?
00:56:09 – What do you want to learn next?
00:56:58 – Thanks and goodbye
Show Links:
Liam Brannigan - Data Scientist
Polars
polars - PyPI
Coming from Pandas - Polars - User Guide
Rho-Signal Data Analytics - YouTube
Cheatsheet for Pandas to Polars - Rho Signal
Data Analysis with Polars - Udemy
I wrote one of the fastest DataFrame libraries - Polars
Database-like ops benchmark comparison
Data science 2025 - Liam Brannigan
DuckDB - An in-process SQL OLAP database management system
The great Python DataFrame showdown, part 1: Demystifying Apache Arrow
Apache Arrow
Learn Rust - Rust Programming Language
Modern Polars
Anaconda - PyScript Updates: Bytecode Alliance, Pyodide, and MicroPython
Jupytext - Jupyter Notebooks as Markdown Documents, Julia, Python or R Scripts
Polars up and running - Liam Brannigan
Liam Brannigan - Data Scientist - Blog
Liam Brannigan (@braaannigan) - Twitter
Liam Brannigan - LinkedIn
Level up your Python skills with our expert-led courses:
Threading in Python
Reading and Writing Files With pandas
Graph Your Data With Python and ggplot
Support the podcast & join our community of Pythonistas

Jan 6, 2023 • 45min
Surveying Comprehension Constructs & Python Parallelism Infighting
Have you embraced the use of comprehensions in your Python journey? Are you familiar with all the varieties of comprehension constructs? This week on the show, Christopher Trudeau is here, bringing another batch of PyCoder’s Weekly articles and projects.
We discuss a recent article that surveys Python’s comprehensions and generators. This overview includes code snippets and the fundamentals of creating list, set, and dictionary comprehensions. We weigh the advantages of using a comprehension versus the more familiar for loops that they replace.
Christopher shares an article about how there may be infighting between the parallelism in your Python code and the parallelism within the libraries that you’re using. These complex system interactions can cause processing slowdowns and hard-to-trace bottlenecks.
We share several other articles and projects from the Python community, including a news roundup, a Python linter comparison, an overview of multiprocessing race conditions in Python, a discussion covering import statement styles, a project for WASM-powered Jupyter tools running in the browser, and a collection of easter eggs and jokes hidden inside Python itself.
Course Spotlight: Understanding Python List Comprehensions
Python list comprehensions make it easy to create lists while performing sophisticated filtering, mapping, and conditional logic on their members. In this course, you’ll learn when to use list comprehensions in Python and how to create them effectively.
Topics:
00:00:00 – Introduction
00:02:41 – PyPy v7.3.10 Release
00:03:17 – Django Bugfix Release: 4.1.4
00:03:28 – Python 3.11.1, 3.10.9, 3.9.16, 3.8.16, 3.7.16 Released
00:03:56 – Python Linter Comparison 2022
00:11:51 – Who Controls Parallelism? A Disagreement That Leads to Slower Code
00:15:58 – Sponsor: InfluxDB
00:16:47 – A Crash Course in Comprehensions and Generators
00:24:23 – Multiprocessing Race Conditions in Python
00:27:46 – Video Course Spotlight
00:28:55 – What Style of import Statement Do You Use?
00:36:54 – jupyterlite: WASM Powered Jupyter Running in the Browser
00:40:35 – python-easter-eggs: Easter Eggs and Hidden Jokes in Python
00:43:18 – PyCoder’s Weekly: Submit a Link
00:43:46 – Thanks and goodbye
News:
PyPy v7.3.10 Release
Django Bugfix Release: 4.1.4
Python 3.11.1, 3.10.9, 3.9.16, 3.8.16, 3.7.16 Released
Show Links:
Python Linter Comparison 2022 – There are many linter choices for Python. This article covers a lot of them: Pylint, Pyflakes, Flake8, autopep8, Bandit, Prospector, Pylama, Pyroma, Black, Mypy, Radon, and mccabe.
Who Controls Parallelism? A Disagreement That Leads to Slower Code – In complex systems, there may be a fight between the parallelism in your code vs the parallelism in the libraries that you’re using. This fight can cause things to slow down. This article shows some examples and explores what you can do about the issue.
A Crash Course in Comprehensions and Generators – A great collection of code snippets that showcase the power and flexibility of list comprehensions, generators, and related constructs.
Multiprocessing Race Conditions in Python – A race condition happens when parallel tasks attempt to execute code at the same time and the results are dependent on order of execution. Finding race conditions can be challenging. This article gives some hints as to how to find the different kinds of race conditions when coding with the multiprocessing module.
Discussion:
What Style of import Statement Do You Use?
Using wildcard imports (from … import *) — Python Anti-Patterns documentation
Python import: Advanced Techniques and Tips – Real Python
Projects:
jupyterlite: WASM Powered Jupyter Running in the Browser
python-easter-eggs: Easter Eggs and Hidden Jokes in Python
Additional Links:
Episode #39: Generators, Coroutines, and Learning Python Through Exercises – The Real Python Podcast
How to Use Generators and yield in Python – Real Python
PyCoder’s Weekly: Submit a Link
Level up your Python skills with our expert-led courses:
Threading in Python
Understanding Python List Comprehensions
Python Generators 101
Support the podcast & join our community of Pythonistas

Dec 23, 2022 • 1h 16min
2022 Real Python Tutorial & Video Course Wrap Up
It’s been another year of changes at Real Python! The Real Python team has written, edited, curated, illustrated, and produced a mountain of Python material this year. We added some new members to the team, updated the site’s features, and created new styles of tutorials and video courses.
Three members of the Real Python team join us this week, Kate Finegan, Geir Arne Hjelle, and Leodanis Pozo Ramos. We wanted to share a year-end wrap-up with tutorials, step-by-step projects, and video courses that showcase what our team created this year.
Kate and Geir Arne help to shepherd articles through the multi-stage editing process. Along with the rest of the team, they make sure these resources impart crucial Python knowledge and provide a thorough didactic experience. Leodanis’ name has been featured many times on this podcast, and it was great to talk to him about writing tutorials and diving deep into the Pythonic details.
We hope you enjoy this review! Programming note, there won’t be an episode next week, but we’ll be back in January and look forward to bringing you a year full of great guests, articles, and topics.
Course Spotlight: Building Python Project Documentation With MkDocs
In this video course, you’ll learn how to build professional documentation for a Python package using MkDocs and mkdocstrings. These tools allow you to generate nice-looking and modern documentation from Markdown files and, more importantly, from your code’s docstrings.
Topics:
00:00:00 – Introduction
00:03:02 – Geir Arne and RP content direction
00:04:31 – Kate Finegan and editing tutorials
00:07:35 – Leodanis Pozo Ramos and writing tutorials
00:09:14 – Changes for Real Python in 2022
00:18:56 – Your Python Coding Environment on Windows
00:23:32 – Sponsor: TelemetryHub
00:24:16 – Why Is It Important to Close Files in Python?
00:28:40 – Python and TOML: New Best Friends
00:33:47 – Sneaky REST APIs With Django Ninja
00:36:24 – Manage Your To-Do Lists Using Python and Django
00:39:52 – Python Constants: Improve Your Code’s Maintainability
00:42:59 – Build Your Python Project Documentation With MkDocs
00:49:28 – Building a URL Shortener With FastAPI and Python
00:51:24 – Video Course Spotlight
00:52:40 – Image Processing With the Python Pillow Library
00:57:20 – Draw the Mandelbrot Set in Python
01:05:01 – Using Python’s pip to Manage Your Projects’ Dependencies
01:11:39 – Exploring Scopes and Closures in Python
01:14:49 – Thanks and goodbye
Show Links:
Your Python Coding Environment on Windows: Setup Guide
Why Is It Important to Close Files in Python?
Python and TOML: New Best Friends
Sneaky REST APIs With Django Ninja – Video Course
Manage Your To-Do Lists Using Python and Django
Python Constants: Improve Your Code’s Maintainability
Build Your Python Project Documentation With MkDocs
Building a URL Shortener With FastAPI and Python – Video Course
Image Processing With the Python Pillow Library
Draw the Mandelbrot Set in Python
Using Python’s pip to Manage Your Projects’ Dependencies
Exploring Scopes and Closures in Python – Video Course
Additional Links:
Building Python Project Documentation With MkDocs – Video Course
Build a URL Shortener With FastAPI and Python – Step-by-Step Tutorial
Level up your Python skills with our expert-led courses:
Building Python Project Documentation With MkDocs
Sneaky REST APIs With Django Ninja
Exploring Scopes and Closures in Python
Support the podcast & join our community of Pythonistas


