

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

Dec 25, 2020 • 48min
2020 Real Python Articles in Review
It’s been quite the year! The Real Python team has written, edited, curated, illustrated, and produced a mountain of Python articles this year. We also upgraded the site and membership with office hours, transcripts, this podcast, and much more.
We are joined by two members of the Real Python team, David Amos and Joanna Jablonski. We wanted to share a year-end wrap-up with a collection of articles that showcase a diversity of Python topics and the quality of what our team created this year.
Joanna and David help to shepherd articles through the multi-stage editing process. They make sure articles not only impart crucial Python knowledge but also provide a thorough didactic experience.
We hope you enjoy this review and as a programming note, there won’t be an episode next week, but we will be back the following week, and look forward to bringing you a year full of great guests, topics, articles, and projects.
Course Spotlight: Python Turtle for Beginners
In this step-by-step course, you’ll learn the basics of Python programming with the help of a simple and interactive Python library called turtle. If you’re a beginner to Python, then this tutorial will definitely help you on your journey as you take your first steps into the world of programming.
Topics:
00:00:00 – Introduction
00:01:41 – Joanna visits the show
00:04:28 – Pandas Project: Make a Gradebook With Python & Pandas
00:07:18 – Build Physical Projects With Python on the Raspberry Pi
00:11:32 – Python Practice Problems: Get Ready for Your Next Interview
00:15:05 – Data Version Control With Python and DVC
00:19:02 – What Are Python Wheels and Why Should You Care?
00:22:57 – Video Course Spotlight
00:23:58 – Python import: Advanced Techniques and Tips
00:26:33 – Hands-On Linear Programming: Optimization With Python
00:29:47 – Customize the Django Admin With Python
00:33:51 – The Python return Statement: Usage and Best Practices
00:36:12 – Python GUI Programming With Tkinter
00:46:47 – Thanks and goodbyes
Show links:
Pandas Project: Make a Gradebook With Python & Pandas
Build Physical Projects With Python on the Raspberry Pi
Python Practice Problems: Get Ready for Your Next Interview
Data Version Control With Python and DVC
What Are Python Wheels and Why Should You Care?
Python import: Advanced Techniques and Tips
Hands-On Linear Programming: Optimization With Python
Customize the Django Admin With Python
The Python return Statement: Usage and Best Practices
Python GUI Programming With Tkinter
Learning Paths Referenced:
Pandas for Data Science: Learning Path
Introduction to Python: Learning Path
Ace Your Python Coding Interview: Learning Path
Django for Web Development: Learning Path
GUI Programming With PyQt: Learning Path
Python Basics Book: Learning Path
Data Collection & Storage: Learning Path
Podcast Episodes Referenced:
Episode 21: Exploring K-means Clustering and Building a Gradebook With Pandas
Episode 13: PDFs in Python and Projects on the Raspberry Pi
Episode 27: Preparing for an Interview With Python Practice Problems
Episode 25: Data Version Control in Python and Real Python Video Transcripts
Episode 23: Python Wheels and Pass by Reference in Python
Episode 24: Options for Packaging Your Python Application: Wheels, Docker, and More
Episode 19: Advanced Python Import Techniques and Managing Users in Django
Episode 17: Linear Programming, PySimpleGUI, and More
Episode 31: Python Return Statement Best Practices and Working With the map() Function
Episode 32: Our New “Python Basics” Book & Filling the Gaps in Your Learning Path
Additional Links:
About Joanna Jablonski: Real Python Team
Real Python’s Office Hours: Learn With Python Experts in Real Time
Office Hours Archive - September 9, 2020 : Guest Jim Anderson
Level up your Python skills with our expert-led courses:
Getting Started With Django: Building a Portfolio App
Python Modules and Packages: An Introduction
Python Turtle for Beginners
Support the podcast & join our community of Pythonistas

Dec 18, 2020 • 58min
How Python Manages Memory and Creating Arrays With np.linspace
Have you wondered how Python manages memory? How are your variables stored in memory, and when do they get deleted? This week on the show, David Amos is here, and he has brought another batch of PyCoder’s Weekly articles and projects.
Along with the Real Python article on Python memory management, we also talk about another article about creating even and non-even spaced arrays in Python with np.linspace.
We share an article titled “The Unholy Way of Using Virtual Environments”. This leads to a discussion on how to structure the directories around a virtual environment.
We also cover several other articles and projects from the Python community including, storing a list in an int, why you should use an ORM (Object Relational Manager), unraveling not in Python, an open-source Python fuzzer, and Python static website generators.
Course Spotlight: How Python Manages Memory
Get ready for a deep dive into the internals of Python to understand how it handles memory management. By the end of this course, you’ll know more about low-level computing, understand how Python abstracts lower-level operations, and find out about Python’s internal memory management algorithms.
Topics:
00:00:00 – Introduction
00:01:38 – np.linspace(): Create Evenly or Non-Evenly Spaced Arrays
00:05:20 – The Unholy Way of Using Virtual Environments
00:17:33 – Storing a list in an int
00:24:48 – Why Should You Use an ORM (Object Relational Mapper)?
00:32:30 – Video Course Spotlight
00:33:24 – Unravelling not in Python
00:40:03 – How Python Manages Memory
00:45:28 – Follow-up from Jupylet
00:46:51 – Announcing the Atheris Python Fuzzer
00:50:42 – nikola: Static Website and Blog Generator
Show Links:
np.linspace(): Create Evenly or Non-Evenly Spaced Arrays – In this tutorial, you’ll learn how to use NumPy’s np.linspace() effectively to create an evenly or non-evenly spaced range of numbers. You’ll explore several practical examples of the function’s many uses in numerical applications.
The Unholy Way of Using Virtual Environments – If you’ve used virtual environments before, you may have created a venv/ folder inside the root directory of your project. This is standard, but has some downsides. Have you every thought about reversing this and putting your project inside your venv/ folder?
Storing a list in an int – For a fun exercise, learn how you can leverage Python’s unlimited integer precision to encode and store lists of any size as a single integer. Because, why not?
Why Should You Use an ORM (Object Relational Mapper)? – Budding web developers learning Model-View-Controller frameworks are taught that they should use an Object Relational Mapper (ORM) to interface with their databases. But the “why” is often brushed aside or omitted entirely, leaving a fledgling programmer with burning questions like “What are ORMs, anyway?” and “What problems do they solve?”
Unravelling not in Python – In the next blog post in his series about Python’s syntactic sugar, Brett Cannon tackles what would seem to be a very simple bit of syntax, but which actually requires diving into multiple layers to fully implement: not.
How Python Manages Memory – Get ready for a deep dive into the internals of Python to understand how it handles memory management. By the end of this course, you’ll know more about low-level computing, understand how Python abstracts lower-level operations, and find out about Python’s internal memory management algorithms.
Announcing the Atheris Python Fuzzer – Get started with fuzzing, a technique for automatically finding bugs in Python code by repeatedly trying various inputs to your program, using Google’s newly open-sourced Python fuzzer called Atheris.
Project Links:
Jupylet: Getting Started
nikola: Static Website and Blog Generator
atheris: Python Fuzzing Framework
Additional Links:
Look Ma, No For-Loops: Array Programming With NumPy: Real Python article
NumPy: numpy.ndarray
An Effective Python Environment: Making Yourself at Home: Real Python article
A quick-and-dirty guide on how to install packages for Python: Brett Cannon’s blog
Data Management With Python, SQLite, and SQLAlchemy: Real Python article
SQLAlchemy: The Python SQL Toolkit and Object Relational Mapper
Writing your first Django app: DjangoProject.com
Memory Management in Python: Real Python article
The Python Language Reference
Memory Management: Python docs
Pelican: Static Site Generator, Written in Python
Lektor: Flexible and Powerful Static Content Management System
Level up your Python skills with our expert-led courses:
Working With Python Virtual Environments
How Python Manages Memory
Using NumPy's np.arange() Effectively
Support the podcast & join our community of Pythonistas

Dec 11, 2020 • 1h 6min
Generators, Coroutines, and Learning Python Through Exercises
Python expert Reuven Lerner discusses generators, coroutines, and the importance of practice in Python. Topics include using 'send' method, 'yield from' syntax, exceptions, and benefits of generator functions. Reuven's teaching techniques, PyCon Africa 2020 talk, and 'Python Workout' book are highlighted.

Dec 4, 2020 • 44min
Looping With enumerate() and Python GUIs With PyQt
If you’re coming to Python from a different language, you may not know about a useful tool for working with loops, Python’s built-in enumerate function. This week on the show, David Amos is here, and he has brought another batch of PyCoder’s Weekly articles and projects.
Along with the Real Python article covering the details of the enumerate function, we also talk about another article about constructing Python graphical user interface elements in PyQt.
David shares a couple of resources for data scientists, including an article about skills not taught in data science boot camps, and a project for creating synthetic data.
We also cover several other articles and projects from the Python community including, an update about youtubedl, hunting for malicious packages on PyPI, using Python’s bisect module, 73 examples to help you master f-strings, and game programming in Jupyter notebooks.
Course Spotlight: Formatting Python Strings
In this course, you’ll see two items to add to your Python string formatting toolkit. You’ll learn about Python’s string format method and the formatted string literal, or f-string. You’ll learn about these formatting techniques in detail and add them to your Python string formatting toolkit.
Topics:
00:00:00 – Introduction
00:01:53 – The youtube-dl Repository Has Been Restored on GitHub With Help From the Electronic Frontier Foundation
00:04:12 – Python enumerate(): Simplify Looping With Counters
00:07:24 – Hunting for Malicious Packages on PyPI
00:14:31 – Sponsor: Scout APM
00:15:31 – Using Python’s bisect module
00:19:00 – 73 Examples to Help You Master Python’s f-Strings
00:21:35 – 10 Python Skills They Don’t Teach in Bootcamp
00:27:32 – Video Course Spotlight
00:28:28 – Python and PyQt: Creating Menus, Toolbars, and Status Bars
00:33:51 – SDV: Synthetic Data Generation for Tabular, Relational, Time Series Data
00:38:19 – jupylet: Game Programming in Jupyter Notebooks
00:42:59 – Thanks and goodbye
Show Links:
The youtube-dl Repository Has Been Restored on GitHub With Help From the Electronic Frontier Foundation
Python enumerate(): Simplify Looping With Counters – Once you learn about for loops in Python, you know that using an index to access items in a sequence isn’t very Pythonic. So what do you do when you need that index value? In this tutorial, you’ll learn all about Python’s built-in enumerate(), where it’s used, and how you can emulate its behavior.
Hunting for Malicious Packages on PyPI – Jordan Wright installed every package on PyPI to look for malicious content. And he didn’t just inspect code, he actually ran the packages. Brave soul! Learn how he set-up this project and what he learned on his adventure.
Using Python’s bisect module – Python’s bisect module has tools for searching and inserting values into sorted lists. It’s one of his “batteries-included” features that often gets overlooked, but can be a great tool for optimizing certain kinds of code.
73 Examples to Help You Master Python’s f-Strings – f-Strings might be one of the most beloved features in Python 3.6+. Here are 73 examples of how to use f-strings to improve your Python code.
10 Python Skills They Don’t Teach in Bootcamp – Here are ten practical and little-known pandas tips to help you take your skills to the next level.
Python and PyQt: Creating Menus, Toolbars, and Status Bars – In this step-by-step tutorial, you’ll learn how to create, customize, and use Python menus, toolbars, and status bars for creating GUI applications using PyQt.
Projects:
jupylet: Game Programming in Jupyter Notebooks
SDV: Synthetic Data Generation for Tabular, Relational, Time Series Data
Additional Links:
Python and PyQt: Building a GUI Desktop Calculator - Real Python article
PyQt Layouts: Create Professional-Looking GUI Applications - Real Python article
Handling SQL Databases With PyQt: The Basics - Real Python article
Synthetic Data Vault (SDV): A Python Library for Dataset Modeling
RPP - Episode 7: AsyncIO + Music, Origins of Black, and Managing Python Releases
Level up your Python skills with our expert-led courses:
Using Jupyter Notebooks
Formatting Python Strings
How to Write Pythonic Loops
Support the podcast & join our community of Pythonistas

Nov 27, 2020 • 50min
Teaching Python and Finding Resources for Students
Kelly Schuster-Paredes and Sean Tibor from the Teaching Python podcast share their experiences teaching Python to middle school students. They discuss using Real Python resources, Google for research, cloud-based tools, and core Python concepts. They also talk about recent podcast topics and the benefits of teaching Python in a changing educational landscape.

Nov 20, 2020 • 57min
Sentiment Analysis, Fourier Transforms, and More Python Data Science
Are you interested in learning more about Natural Language Processing? Have you heard of sentiment analysis? This week on the show, Kyle Stratis returns to talk about his new article titled, Use Sentiment Analysis With Python to Classify Movie Reviews. David Amos is also here, and all of us cover another batch of PyCoder’s Weekly articles and projects.
Kyle discusses an article about distance metrics for machine learning. David shares a Real Python article about Python signal processing and Fourier transforms with scipy.fft. We also cover several other articles and projects from the Python community including, simulating real-world processes in Python with SimPy, working with Microsoft Excel using Python and OpenPyXL, why running code during import is a bad idea, what I wish I knew as a junior dev, the Raspberry Pi 400 personal computer, dynamic sky replacement and harmonization in videos with SkyAR.
Course Spotlight: Simulating Real-World Processes in Python With SimPy
In this step-by-step course, you’ll see how you can use the SimPy package to model real-world processes with a high potential for congestion. You’ll create an algorithm to approximate a complex system, and then you’ll design and run a simulation of that system in Python.
Topics:
00:00:00 – Introduction
00:02:56 – Use Sentiment Analysis With Python to Classify Movie Reviews
00:09:49 – OpenPyXL: Working with Microsoft Excel Using Python
00:12:41 – An Illustration of Why Running Code During Import Is a Bad Idea
00:16:52 – Distance Metrics for Machine Learning
00:22:52 – Sponsor: linode.com
00:22:52 – What I Wish I Knew as a Junior Dev
00:35:29 – Fourier Transforms With scipy.fft: Python Signal Processing
00:39:44 – Simulating Real-World Processes in Python With SimPy
00:43:30 – Video Course Spotlight
00:44:35 – Raspberry Pi 400 Personal Computer Kit Now Available
00:49:55 – SkyAR: Dynamic Sky Replacement and Harmonization in Videos
00:52:04 – Creating an Idea Factory with Roam Research
00:56:02 – Thanks and goodbye
Show Links:
Use Sentiment Analysis With Python to Classify Movie Reviews – In this tutorial, you’ll learn about sentiment analysis and how it works in Python. You’ll then build your own sentiment analysis classifier with spaCy that can predict whether a movie review is positive or negative.
OpenPyXL: Working with Microsoft Excel Using Python – Ah, Excel. Everyone loves to hate it. But let’s face it. Excel is one of the most popular pieces of software ever written. But you love Python, not Excel, which is why you might want to learn OpenPyXL.
An Illustration of Why Running Code During Import Is a Bad Idea (And How It Happens Anyway) – Code that runs when a module is imported is usually a code smell. But sometimes there’s no way around it.
Distance Metrics for Machine Learning – Many machine learning algorithms can be summarized as transforming data to n-dimensional vectors and computing similarity between points by means of some distance metric. This article explores four of these metrics—the Euclidean, Manhattan, Minkowski, and Hamming distances—and how to compute them with Python.
What I Wish I Knew as a Junior Dev – Some of these are things even senior devs need to be reminded of sometimes!
Fourier Transforms With scipy.fft: Python Signal Processing – In this tutorial, you’ll learn how to use the Fourier transform, a powerful tool for analyzing signals with applications ranging from audio processing to image compression. You’ll explore several different transforms provided by Python’s scipy.fft module.
Projects:
Simulating Real-World Processes in Python With SimPy
Raspberry Pi 400 Personal Computer Kit Now Available
SkyAR: Dynamic Sky Replacement and Harmonization in Videos
Additional Links:
Python Job Hunting in a Pandemic: RPP Episode 10
Natural language processing: Wikipedia
spaCy: Industrial-Strength Natural Language Processing in Python
Natural Language Processing With spaCy in Python
Natural Language Toolkit
Building PDFs in Python with ReportLab: RPP Episode 20
Mouse vs Python: Mike Driscoll Blog
Python 101: 2nd Edition
openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files
Editing Excel Spreadsheets in Python With openpyxl
How to Read a Book: The Ultimate Guide by Mortimer Adler
import antigravity: The History of Python Blog
How to Take Smart Notes by Sönke Ahrens - Summary
Kyle Stratis’ YouTube Channel
Creating an Idea Factory with Roam Research
Level up your Python skills with our expert-led courses:
Simulating Real-World Processes in Python With SimPy
Python Coding Interviews: Tips & Best Practices
Editing Excel Spreadsheets in Python With openpyxl
Support the podcast & join our community of Pythonistas

Nov 13, 2020 • 52min
Security and Authorization in Your Python Web Applications
So you built a web application in Python. Now how are you going to authorize users? Security goes beyond authentication. Who gets to do what, where, and when? This week on the show, we have Sam Scott, chief technology officer from Oso. Oso is an open-source policy engine for authorization that you embed in your application.
Sam talks about the typical security and authorization challenges developers face. He discusses building an engine on top of your existing Flask or Django app. We cover the concept of policies, business logic, and some common paradigms.
Course Spotlight: Exploring HTTPS and Cryptography in Python
In this course, you’ll gain a working knowledge of the various factors that combine to keep communications over the Internet safe. You’ll see concrete examples of how to keep information secure and use cryptography to build your own Python HTTPS application.
Topics:
00:00:00 – Introduction
00:01:32 – Sam’s math background
00:03:11 – What is Sage?
00:04:24 – What is post-quantum cryptography?
00:05:19 – Getting Oso started, authentication vs authorization.
00:10:01 – What is a policy engine?
00:12:57 – Confusing business logic with authorization
00:17:09 – Sponsor: Techmeme Ride Home Podcast
00:17:38 – Pip installing Oso, adding to Flask or Django
00:21:15 – What are common security concerns for developers?
00:25:41 – What are security concerns users have?
00:27:14 – What are the worst security issues you’ve found in a Python app?
00:30:12 – Video Course Spotlight
00:31:32 – What are other common authorization “gotchas”?
00:37:16 – Additional Oso resources
00:39:36 – What does writing in Polar look like?
00:42:00 – Are there authorization paradigms?
00:46:02 – What are you excited about in the world of Python?
00:50:05 – What do you want to learn next?
00:50:49 – Thanks and goodbye
Show Links:
oso on twitter
Sam on twitter
oso: an open source policy engine for authorization
oso Django Docs
oso Flask Docs
oso Python Library Docs
oso Source Code
oso Debugger Docs
Adding authorization to your Flask app with oso: oso blog
Building a Django app with data access controls in 30 min: oso blog
Generating Django Queryset filters from oso policies: oso blog
Polar Adventure: a text-based adventure game written in Polar
Lighting talk on access controls: oso blog
SageMath: A free open-source mathematics software system
Post-quantum cryptography: Wikipedia article
327: Exploits of a Mom : XKCD Comic
Little Bobby Tables: Explain XKCD
Snyk: Developer-first Cloud Native Application Security
Geekle’s python Universe WEB Edition: 19 November 2020
WebAssembly(WASM)
Level up your Python skills with our expert-led courses:
Exploring HTTPS and Cryptography in Python
Using Google Login With Flask
Getting Started With Django: Building a Portfolio App
Support the podcast & join our community of Pythonistas

Nov 6, 2020 • 53min
The Python Modulo Operator & Managing Data With SQLite and SQLAlchemy
Topics discussed in this podcast include managing data with SQLite and SQLAlchemy, exploring the modulo operator in Python, shooting yourself in the foot with Python, fractals on a cloud computer, DMCA takedown request for youtube-dl, using Python for feature film, and a sorting algorithms visualizer.

Oct 30, 2020 • 1h 27min
Going Beyond the Basic Stuff With Python and Al Sweigart
Author Al Sweigart discusses his new book 'Beyond the Basic Stuff with Python' covering command line usage, code formatting, naming conventions, and version control. He also talks about learning Python through games and dispelling Python myths. The episode touches on creating a curriculum around conference talks and offers insights into handling character encodings and Unicode in Python.

Oct 23, 2020 • 51min
Our New "Python Basics" Book & Filling the Gaps in Your Learning Path
Do you have gaps in your Python learning path? If you’re like me, you may have followed a completely random route to learn Python. This week on the show, David Amos is here to talk about the release of the Real Python book, “Python Basics: A Practical Introduction to Python 3”. The book is designed not only to get beginners up to speed but also to help fill in the gaps many intermediate learners may still have.
David has been working on the book for the last two years, and we dive into all the resources that come with it. These include code challenges, quizzes, and multiple projects that are designed to help you cement your learning. We also discuss the people and processes involved in creating, reviewing, and updating the book.
Spotlight: Python Basics: A Practical Introduction to Python 3
Go from beginner to intermediate in Python with this complete curriculum, up-to-date for Python 3.9. Python Basics includes exercises, interactive quizzes, and sample projects, so you’ll always know what to focus on next in order to build a strong Python foundation.
Topics:
00:00:00 – Introduction
00:01:36 – Python Basics: A Practical Introduction to Python 3
00:02:39 – How has feedback helped the process?
00:04:17 – Who is the intended audience?
00:06:02 – Covering how to get Python installed on different platforms?
00:11:05 – What topics does the book cover?
00:14:12 – What can be previewed on Real Python?
00:15:03 – What format can you get the book in?
00:18:30 – Code challenges included!
00:21:33 – What other resources are provided to help with cementing your learning?
00:22:41 – What versions of Python are covered?
00:23:08 – How does the book fit into the Real Python learning eco-system?
00:29:35 – Spotlight: How to get a preview of the book!
00:30:38 – What has the writing process been like?
00:33:21 – What does didactic mean, in terms of reviewing materials?
00:39:23 – What were areas you were excited about updating?
00:41:29 – Were there important things you felt needed to be added?
00:45:55 – Who worked on the book?
00:47:13 – What are you excited about in the world of Python?
00:48:13 – What do you want to learn next?
00:49:40 – Thanks and goodbye
Show Links:
Python Basics: A Practical Introduction to Python 3
Python 3 Installation & Setup Guide
Create and Modify PDF Files in Python
Python GUI Programming With Tkinter
Object-Oriented Programming (OOP) in Python 3
A Practical Introduction to Web Scraping in Python
Level up your Python skills with our expert-led courses:
Grow Your Python Portfolio With 13 Intermediate Project Ideas
Cool New Features in Python 3.9
Unicode in Python: Working With Character Encodings
Support the podcast & join our community of Pythonistas