Bartosz Zaczyński is a Python educator with an M.Sc. in Applied Computer Science and over a decade of commercial experience as a software engineer. He has contributed to projects at both early-stage startups and large, well-known companies.
Over the years, he has mentored hundreds of aspiring developers at Coders Lab, where he focused on teaching software engineering fundamentals. He also authored a comprehensive and well-received Python course published on Udemy and other learning platforms.
At Real Python, Bartosz contributes in-depth tutorials, video courses, and quizzes. He also manages the written content pipeline—overseeing planning, scheduling, and quality assurance—and actively supports the community by sharing his expertise through discussions, and by hosting Office Hours.
Tutorials by Bartosz:
- How to Find an Absolute Value in Python
- How to Copy Objects in Python: Shallow vs Deep Copy Explained
- Python News Roundup: April 2025
- Python's Bytearray: A Mutable Sequence of Bytes
- Bytes Objects: Handling Binary Data in Python
- How to Split a Python List or Iterable Into Chunks
- Executing Python Scripts With a Shebang
- YAML: The Missing Battery in Python
- Expression vs Statement in Python: What's the Difference?
- Structural Pattern Matching in Python
- Python 3.13 Preview: Free Threading and a JIT Compiler
- Python News Roundup: September 2024
- Build a Guitar Synthesizer: Play Musical Tablature in Python
- Python News: What's New From May 2024
- What Is the __pycache__ Folder in Python?
- Install and Execute Python Applications Using pipx
- Reading and Writing WAV Files in Python
- Python News: What's New From February 2024
- What Are Python Raw Strings?
- Python's Array: Working With Numeric Data Efficiently
- Serialize Your Data With Python
- How to Sort Unicode Strings Alphabetically in Python
- Python News: What's New From September 2023
- Bypassing the GIL for Parallel Processing in Python
- Profiling in Python: How to Find Performance Bottlenecks
- Python 3.12 Preview: Support For the Linux perf Profiler
- What's the Zen of Python?
- How to Launch an HTTP Server in One Line of Python Code
- Python News: What's New From April 2023
- Build Robust Continuous Integration With Docker and Friends
- Build a Maze Solver in Python Using Graphs
- Discover bpython: A Python REPL With IDE-Like Features
- Microsoft Power BI and Python: Two Superpowers Combined
- Python News: What's New From October 2022
- Build a Tic-Tac-Toe Game Engine With an AI Player in Python
- GitHub Copilot: Fly With Python at the Speed of Thought
- Python Stacks, Queues, and Priority Queues in Practice
- A First Look at PyScript: Python in the Web Browser
- Build a Hash Table in Python With TDD
- Python News: What's New From February 2022
- Draw the Mandelbrot Set in Python
- A Roadmap to XML Parsers in Python
- Representing Rational Numbers With Python Fractions
- Hosting a Django Project on Heroku
- Python News: What's New From August 2021
- Simplify Complex Numbers With Python
- Bitwise Operators in Python
- Python vs JavaScript for Pythonistas
- How to Do a Binary Search in Python
- Your Guide to the Python print() Function
- Python Basics Exercises: Reading and Writing Files (Course)
- Python Basics Exercises: Numbers and Math (Course)
- Python Basics: Reading and Writing Files (Course)
- Python Basics: Numbers and Math (Course)
- Host Your Django Project on Heroku (Course)
Tutorials Bartosz Contributed to:
- Write Pythonic and Clean Code With namedtuple
- Defining Your Own Python Function
- Python Hits the Big Screen and Other Python News for June 2025
- How Can You Structure Your Python Script?
- Control Flow Structures in Python
- Marimo: A Reactive, Reproducible Notebook
- Nested Loops in Python
- How to Group Data Using Polars .group_by()
- How to Get the Most Out of PyCon US
- Python's T-Strings Coming Soon and Other Python News for May 2025
- How to Use Loguru for Simpler Python Logging
- Sets in Python
- Modern Web Automation With Python and Selenium
- Managing Python Projects With uv: An All-in-One Solution
- Getting Started With Python IDLE
- How to Exit Loops Early With the Python Break Keyword
- Namespaces in Python
- How to Join Strings in Python
- How to Split a String in Python
- Develop Data Visualization Interfaces in Python With Dash
- Build a Dice-Rolling Application With Python
- Providing Multiple Constructors in Your Python Classes
- Build a Tic-Tac-Toe Game With Python and Tkinter
- Python's Mutable vs Immutable Types: What's the Difference?
- Python's zipfile: Manipulate Your ZIP Files Efficiently
- Python's raise: Effectively Raising Exceptions in Your Code
- How to Download Files From URLs With Python
- Python and TOML: New Best Friends
- Python Class Constructors: Control Your Object Instantiation
- How to Install Python on Your System: A Guide
- Python Constants: Improve Your Code's Maintainability
- pandas GroupBy: Your Guide to Grouping Data in Python
- Create and Modify PDF Files in Python
- The subprocess Module: Wrapping Programs With Python
- Python's assert: Debug and Test Your Code Like a Pro
- Python's pathlib Module: Taming the File System
- Python's urllib.request for HTTP Requests
- HTML and CSS for Python Developers
- Iterators and Iterables in Python: Run Efficient Iterations
- Strings and Character Data in Python
- Working With JSON Data in Python
- Get Started With Django User Management
- Dictionaries in Python
- Python's property(): Add Managed Attributes to Your Classes
- Build Enumerations of Constants With Python's Enum
- Python Classes: The Power of Object-Oriented Programming
- Dependency Management With Python Poetry
- The Walrus Operator: Python's Assignment Expressions
- Sorting a Python Dictionary: Values, Keys, and More
- Build Command-Line Interfaces With Python's argparse
- Primer on Python Decorators
- Python Set Comprehensions: How and When to Use Them
- Python Timer Functions: Three Ways to Monitor Your Code
- Effective Python Testing With pytest
- Asynchronous Tasks With Django and Celery
- Using and Creating Global Variables in Your Python Functions
- When to Use a List Comprehension in Python
- How to Round Numbers in Python
- Linear Regression in Python
- Socket Programming in Python (Guide)
- Python GUI Programming With Tkinter
- Basic Input and Output in Python
- Beautiful Soup: Build a Web Scraper With Python
- Python Exceptions: An Introduction
- Python String Formatting: Available Tools and Their Features
- Python's F-String for String Interpolation and Formatting
- Python Virtual Environments: A Primer
- Continuous Integration and Deployment for Python With GitHub Actions
- Speed Up Your Python Program With Concurrency
- Python range(): Represent Numerical Ranges
- Using the len() Function in Python
- Python Closures: Common Use Cases and Examples
- Python 3.13: Cool New Features for You to Try
- Python 3.13 Preview: A Modern REPL
- How to Use Conditional Expressions With NumPy where()
- Generate Images With DALL·E and the OpenAI API
- Web Scraping With Scrapy and MongoDB
- Asynchronous Iterators and Iterables in Python
- Functional Programming in Python: When and How to Use It
- Hugging Face Transformers: Leverage Open-Source AI in Python
- Python Protocols: Leveraging Structural Subtyping
- Ruff: A Modern Python Linter for Error-Free and Maintainable Code
- Python Mappings: A Comprehensive Guide
- String Interpolation in Python: Exploring Available Tools
- What Are CRUD Operations?
- The Python calendar Module: Create Calendars With Python
- What's Lazy Evaluation in Python?
- How to Format Floats Within F-Strings in Python
- Prompt Engineering: A Practical Example
- Visualizing Data in Python With Seaborn
- Duck Typing in Python: Writing Flexible and Decoupled Code
- Python's Magic Methods: Leverage Their Power in Your Classes
- How to Render Markdown in a Django Application
- How to Use Type Hints for Multiple Return Types in Python
- Python 3.12 Preview: Static Typing Improvements
- Click and Python: Build Extensible and Composable CLI Apps
- Python 3.12 Preview: More Intuitive and Consistent F-Strings
- Python's list Data Type: A Deep Dive With Examples
- Python News: What's New From June 2023
- Unlock IPython's Magical Toolbox for Your Coding Journey
- Choosing the Best Coding Font for Programming
- Python's .__call__() Method: Creating Callable Instances
- SOLID Principles: Improve Object-Oriented Design in Python
- How to Get Normally Distributed Random Numbers With NumPy
- Python News: What's New From March 2023
- Python 3.12 Preview: Ever Better Error Messages
- How to Read Python Input as Integers
- When Should You Use .__repr__() vs .__str__() in Python?
- How to Evaluate the Quality of Python Packages
- Advent of Code: Solving Your Puzzles With Python
- Python's doctest: Document and Test Your Code at Once
- Minimax in Python: Learn How to Lose the Game of Nim
- Custom Python Strings: Inheriting From str vs UserString
- Custom Python Lists: Inheriting From list vs UserList
- Your Python Coding Environment on Windows: Setup Guide
- Custom Python Dictionaries: Inheriting From dict vs UserDict
- Python 3.11 Preview: TOML and tomllib
- LBYL vs EAFP: Preventing or Handling Errors in Python
- How to Publish an Open-Source Python Package to PyPI
- Build a URL Shortener With FastAPI and Python
- Real Python at PyCon US 2022
- Pagination for a User-Friendly Django App
- Python's all(): Check Your Iterables for Truthiness
- Modulo String Formatting in Python
- Build and Submit HTML Forms With Django – Part 4
- Build and Handle POST Requests in Django – Part 3
- Build a Django Front End With Bulma – Part 2
- Build a Social Network With Django – Part 1
- Python Zip Imports: Distribute Modules and Packages Quickly
- Java vs Python: Basic Python for Java Developers
- Prettify Your Data Structures With Pretty Print in Python
- Securely Deploy a Django App With Gunicorn, Nginx, & HTTPS
- Advanced Visual Studio Code for Python Developers
- Python's zipapp: Build Executable Zip Applications
- Using the "not" Boolean Operator in Python
- Python's sum(): The Pythonic Way to Sum Values
- Reverse Strings in Python: reversed(), Slicing, and More
- Django Templates: Built-In Tags and Filters
- Using the "and" Boolean Operator in Python
- Using Python Optional Arguments When Defining Functions
- Python's deque: Implement Efficient Queues and Stacks
- Python's ChainMap: Manage Multiple Contexts Effectively
- Python's collections: A Buffet of Specialized Data Types
- Your First Steps With Django: Set Up a Django Project
- Using FastAPI to Build Python Web APIs
- What Can I Do With Python?
- Python's Counter: The Pythonic Way to Count Objects
- Reverse Python Lists: Beyond .reverse() and reversed()
- Python's filter(): Extract Values From Iterables
- Context Managers and Python's with Statement
- Visualizing Data in Python Using plt.scatter()
- Embedded Python: Build a Game on the BBC micro:bit
- Recursion in Python: An Introduction
- Build a Platform Game in Python With Arcade
- Deploying a Python Flask Example Application Using Heroku
- The k-Nearest Neighbors (kNN) Algorithm in Python
- OrderedDict vs dict in Python: The Right Tool for the Job
- Python and MongoDB: Connecting to NoSQL Databases
- pandas Sort: Your Guide to Sorting Data in Python
- Qt Designer and Python: Build Your GUI Applications Faster
- Python Web Applications: Deploy Your Script as a Flask App
- Stochastic Gradient Descent Algorithm With Python and NumPy
- How to Use Python: Your First Steps
- NumPy Tutorial: Your First Steps Into Data Science in Python
- Python's .append(): Add Items to Your Lists in Place
- Python and MySQL Database: A Practical Introduction
- Use PyQt's QThread to Prevent Freezing GUIs
- Handling SQL Databases With PyQt: The Basics
- np.linspace(): Create Evenly or Non-Evenly Spaced Arrays
- Python and PyQt: Creating Menus, Toolbars, and Status Bars
- Use Sentiment Analysis With Python to Classify Movie Reviews
- Caching in Python Using the LRU Cache Strategy
- Get Started With Django Part 3: Django View Authorization
- Execute Your Python Scripts With a Shebang (Course)
- Using Structural Pattern Matching in Python (Course)
- Single and Double Underscore Naming Conventions in Python (Course)
- Simulate a Text File in Python (Course)
- Finding Python Easter Eggs (Course)
- Python Basics Exercises: Dictionaries (Course)
- Python Basics Exercises: Installing Packages With pip (Course)
- Create a Tic-Tac-Toe Python Game Engine With an AI Player (Course)
- Python Basics Exercises: Reading and Writing Files (Course)
- Python Basics Exercises: Strings and String Methods (Course)
- Python Basics Exercises: Modules and Packages (Course)
- Using the bpython Enhanced REPL (Course)
- Mazes in Python: Build, Visualize, Store, and Solve (Course)
- YAML: Python's Missing Battery (Course)
- Python Basics Exercises: File System Operations (Course)
- Python Basics: File System Operations (Course)
- Python Basics: Dictionaries (Course)
- Host Your Django Project on Heroku (Course)
- Binary, Bytes, and Bitwise Operators in Python (Course)
- Python vs JavaScript for Python Developers (Course)
- Creating a Binary Search in Python (Course)
- The Python print() Function: Go Beyond the Basics (Course)