About Kate Finegan
Kate relishes a well-placed comma as Tutorial Editor for Real Python.
When she’s not working with authors to perfect their tutorials, she can be found taking long walks, playing with her two cats, adding chili flakes to everything, knitting, cooking, or writing fiction. Her creative work has earned grants from Canada Council for the Arts, Ontario Arts Council, and Toronto Arts Council and been published in numerous journals. She also edits novels and novellas for Split/Lip Press. Having grown up in Tennessee, she now calls Saskatchewan home.
Tutorials by Kate:
- Learn From 2023's Most Popular Python Tutorials and Courses
- Python News: What's New From July 2023
- Python News: What's New From February 2023
- Python News: What's New From July 2022
Tutorials Kate Contributed to:
- How to Run Your Python Scripts and Code
- Effective Python Testing With pytest
- Python Timer Functions: Three Ways to Monitor Your Code
- Asynchronous Tasks With Django and Celery
- Using and Creating Global Variables in Your Python Functions
- Socket Programming in Python (Guide)
- How to Round Numbers in Python
- Linear Regression in Python
- Python GUI Programming With Tkinter
- When to Use a List Comprehension in Python
- Basic Input and Output in Python
- How to Check if a Python String Contains a Substring
- Python Exceptions: An Introduction
- What Does if __name__ == "__main__" Do in Python?
- Python Virtual Environments: A Primer
- Python's F-String for String Interpolation and Formatting
- Python range(): Represent Numerical Ranges
- Efficient String Concatenation in Python
- How to Iterate Through a Dictionary in Python
- Using Python's pip to Manage Your Projects' Dependencies
- Generate Images With DALL·E and the OpenAI API
- Web Scraping With Scrapy and MongoDB
- How to Install Python on Your System: A Guide
- Primer on Jinja Templating
- Python Classes: The Power of Object-Oriented Programming
- The Walrus Operator: Python's Assignment Expressions
- How to Get the Most Out of PyCon US
- Write Unit Tests for Your Python Code With ChatGPT
- Reading and Writing WAV Files in Python
- Prompt Engineering: A Practical Example
- Visualizing Data in Python With Seaborn
- Build an LLM RAG Chatbot With LangChain
- Python's __all__: Packages, Modules, and Wildcard Imports
- Python's Requests Library (Guide)
- Duck Typing in Python: Writing Flexible and Decoupled Code
- How to Read User Input From the Keyboard in Python
- Dependency Management With Python Poetry
- BNF Notation: Dive Deeper Into Python's Grammar
- Primer on Python Decorators
- How to Write Beautiful Python Code With PEP 8
- Python News: What's New From January 2024
- Python's Format Mini-Language for Tidy Strings
- What Are Python Raw Strings?
- Using Python for Data Analysis
- Inheritance and Composition: A Python OOP Guide
- Python's Magic Methods: Leverage Their Power in Your Classes
- Python's Array: Working With Numeric Data Efficiently
- Add Logging and Notification Messages to Flask Web Projects
- Enhance Your Flask Web Project With a Database
- Build a Scalable Flask Web Project From Scratch
- Python News: What's New From November 2023
- Build a Hangman Game With Python and PySimpleGUI
- Serialize Your Data With Python
- Single and Double Underscores in Python Names
- The Python Rich Package: Unleash the Power of Console Text
- Build Conway's Game of Life With Python
- How to Render Markdown in a Django Application
- Embeddings and Vector Databases With ChromaDB
- JupyterLab for an Enhanced Notebook Experience
- Document Your Python Code and Projects With ChatGPT
- Python News: What's New From October 2023
- Build a Hangman Game for the Command Line in Python
- How to Use Type Hints for Multiple Return Types in Python
- Boost Your Coding Productivity With Ptpython
- Build a Blog From Scratch With Django
- How to Sort Unicode Strings Alphabetically in Python
- Python News: What's New From September 2023
- Python's tuple Data Type: A Deep Dive With Examples
- Python 3.12: Cool New Features for You to Try
- Python 3.12 Preview: Static Typing Improvements
- Python 3.12 Preview: Subinterpreters
- How to Catch Multiple Exceptions in Python
- Operators and Expressions in Python
- Bypassing the GIL for Parallel Processing in Python
- Object-Oriented Programming (OOP) in Python
- Generate Beautiful QR Codes With Python
- Python News: What's New From August 2023
- Get Started With Django: Build a Portfolio App
- Click and Python: Build Extensible and Composable CLI Apps
- Build a Code Image Generator With Python
- Python Polars: A Lightning-Fast DataFrame Library
- What Are Python Asterisk and Slash Special Parameters For?
- Working With the Python operator Module
- How to Download Files From URLs With Python
- Python 3.12 Preview: More Intuitive and Consistent F-Strings
- Python & APIs: A Winning Combo for Reading Public Data
- 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
- Profiling in Python: How to Find Performance Bottlenecks
- Python 3.12 Preview: Support For the Linux perf Profiler
- Why Are Membership Tests So Fast for range() in Python?
- How to Flatten a List of Lists in Python
- Python's Self Type: How to Annotate Methods That Return self
- Python's raise: Effectively Raising Exceptions in Your Code
- How to Make Engaging Programming Videos
- Python News: What's New From May 2023
- What's the Zen of Python?
- Using the NumPy Random Number Generator
- Create and Modify PDF Files in Python
- Choosing the Best Coding Font for Programming
- Python's .__call__() Method: Creating Callable Instances
- How to Launch an HTTP Server in One Line of Python Code
- ChatGPT: Your Personal Python Coding Mentor
- Python News: What's New From April 2023
- Build Robust Continuous Integration With Docker and Friends
- SOLID Principles: Improve Object-Oriented Design in Python
- Build Your Own Face Recognition Tool With Python
- How to Get Normally Distributed Random Numbers With NumPy
- Python's pathlib Module: Taming the File System
- Python News: What's New From March 2023
- Python 3.12 Preview: Ever Better Error Messages
- Python's del: Remove References From Scopes and Containers
- Build a Maze Solver in Python Using Graphs
- How to Read Python Input as Integers
- When Should You Use .__repr__() vs .__str__() in Python?
- Executing Python Scripts With a Shebang
- How to Evaluate the Quality of Python Packages
- Python's Mutable vs Immutable Types: What's the Difference?
- What's a Python Namespace Package, and What's It For?
- Iterators and Iterables in Python: Run Efficient Iterations
- Using NumPy reshape() to Change the Shape of an Array
- The Terminal: First Steps and Useful Commands
- Develop Data Visualization Interfaces in Python With Dash
- How to Flush the Output of the Python Print Function
- Python News: What's New From January 2023
- How to Split a Python List or Iterable Into Chunks
- Build a Wordle Clone With Python and Rich
- Build a JavaScript Front End for a Flask API
- How to Iterate Over Rows in pandas, and Why You Shouldn't
- The Python Standard REPL: Try Out Code and Ideas Quickly
- Linear Algebra in Python: Matrix Inverses and Least Squares
- Working With Linear Systems in Python With scipy.linalg
- Python's Assignment Operator: Write Robust Assignments
- Python Folium: Create Web Maps From Your Data
- Learn From 2022's Most Popular Python Tutorials and Courses
- Discover bpython: A Python REPL With IDE-Like Features
- Natural Language Processing With spaCy in Python
- Python's "in" and "not in" Operators: Check for Membership
- How to Get and Use the Current Time in Python
- Build Command-Line Interfaces With Python's argparse
- Python News: What's New From November 2022
- Advent of Code: Solving Your Puzzles With Python
- How to Get a List of All Files in a Directory With Python
- Microsoft Power BI and Python: Two Superpowers Combined
- Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 3
- Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 2
- Python REST APIs With Flask, Connexion, and SQLAlchemy – Part 1
- Getters and Setters: Manage Attributes in Python
- Python News: What's New From October 2022
- Should You Update to the Latest Python Bugfix Version?
- Python's doctest: Document and Test Your Code at Once
- How to Get the First Match From a Python List or Iterable
- Python 3.11: Cool New Features for You to Try
- Build a Tic-Tac-Toe Game Engine With an AI Player in Python
- A Practical Introduction to Web Scraping in Python
- ChatterBot: Build a Chatbot With Python
- Python News: What's New From September 2022
- Minimax in Python: Learn How to Lose the Game of Nim
- Build Enumerations of Constants With Python's Enum
- Custom Python Strings: Inheriting From str vs UserString
- How to Add Python to PATH
- When Do You Use an Ellipsis in Python?
- How to Replace a String in Python
- Custom Python Lists: Inheriting From list vs UserList
- HTML and CSS for Python Developers
- Python News: What's New From August 2022
- How Can You Install a Pre-Release Version of Python?
- Python and PyQt: Building a GUI Desktop Calculator
- Python's exec(): Execute Dynamically Generated Code
- How to Find an Absolute Value in Python
- GitHub Copilot: Fly With Python at the Speed of Thought
- Sorting a Python Dictionary: Values, Keys, and More
- Python Constants: Improve Your Code's Maintainability
- Your Python Coding Environment on Windows: Setup Guide
- Custom Python Dictionaries: Inheriting From dict vs UserDict
- Build a Flashcards App With Django
- NumPy's max() and maximum(): Find Extreme Values in Arrays
- Python and TOML: New Best Friends
- Python News: What's New From June 2022
- Python 3.11 Preview: TOML and tomllib
- Python Stacks, Queues, and Priority Queues in Practice
- Build a Tic-Tac-Toe Game With Python and Tkinter
- How Can You Emulate Do-While Loops in Python?
- Build Your Python Project Documentation With MkDocs
- The subprocess Module: Wrapping Programs With Python
- Build a Quiz Application With Python
- A First Look at PyScript: Python in the Web Browser
- LBYL vs EAFP: Preventing or Handling Errors in Python
- Python News: What's New From May 2022
- Level Up Your Skills With the Real Python Slack Community
- How to Publish an Open-Source Python Package to PyPI
- Build a URL Shortener With FastAPI and Python
- pandas GroupBy: Your Guide to Grouping Data in Python
- Python News: What's New From April 2022
- Top Python Game Engines
- Python's min() and max(): Find Smallest and Largest Values
- Real Python at PyCon US 2022
- Why Is It Important to Close Files in Python?
- Combining Data in pandas With merge(), .join(), and concat()
- Python 3.11 Preview: Task and Exception Groups
- Python News: What's New From March 2022
- Build a Site Connectivity Checker in Python
- YAML: The Missing Battery in Python
- Pagination for a User-Friendly Django App
- Image Processing With the Python Pillow Library
- Build a Hash Table in Python With TDD
- Python Class Constructors: Control Your Object Instantiation
- Python 3.11 Preview: Even Better Error Messages
- Python News: What's New From February 2022
- Manage Your To-Do Lists Using Python and Django
- Python's urllib.request for HTTP Requests
- Python's assert: Debug and Test Your Code Like a Pro
- Providing Multiple Constructors in Your Python Classes
- Python's zipfile: Manipulate Your ZIP Files Efficiently
- Python's all(): Check Your Iterables for Truthiness
- Python News: What's New From January 2022
- Draw the Mandelbrot Set in Python
- Raining Outside? Build a Weather CLI App With Python
- Modulo String Formatting in Python
- Build a Dice-Rolling Application With Python
- Python News: What's New From December 2021
- 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
- Python IDEs and Code Editors (Guide)
- When to Use .__repr__() vs .__str__() in Python (Course)
- Generating QR Codes With Python (Course)
- Python Deep Learning: PyTorch vs Tensorflow (Course)
- Finding Python Easter Eggs (Course)
- SQLite and SQLAlchemy in Python: Move Your Data Beyond Flat Files (Course)
- Python Basics Exercises: Dictionaries (Course)
- Creating Asynchronous Tasks With Celery and Django (Course)
- Python Basics Exercises: Installing Packages With pip (Course)
- Python Basics Exercises: Lists and Tuples (Course)
- Building Enumerations With Python's enum (Course)
- Python Basics: Lists and Tuples (Course)
- Python Basics Exercises: Functions and Loops (Course)
- HTTP Requests With Python's urllib.request (Course)
- Python Basics Exercises: Reading and Writing Files (Course)
- Python Basics Exercises: Strings and String Methods (Course)
- Advent of Code: Solving Puzzles With Python (Course)
- Python Basics Exercises: Modules and Packages (Course)
- Python Basics: Modules and Packages (Course)
- Using the bpython Enhanced REPL (Course)
- Python Basics Exercises: Building Systems With Classes (Course)
- Python Basics Exercises: Object-Oriented Programming (Course)
- What's New in Python 3.12 (Course)
- Python Basics Exercises: Conditional Logic and Control Flow (Course)
- What Does if __name__ == "__main__" Mean in Python? (Course)
- Reversing Strings in Python (Course)
- Socket Programming in Python Part 1: Handling Connections (Course)
- Filtering Iterables With Python (Course)
- Recursion in Python (Course)
- Python Basics: Reading and Writing Files (Course)
- Getting the First Match From a Python List or Iterable (Course)
- Using k-Nearest Neighbors (kNN) in Python (Course)
- Metaclasses in Python (Course)
- Getting the Most Out of the Python Standard REPL (Course)
- Publishing Python Packages to PyPI (Course)
- Using Python's assert to Debug and Test Your Code (Course)
- Python Basics: Installing Packages With pip (Course)
- Using OrderedDict in Python (Course)
- Check if a Python String Contains a Substring (Course)
- YAML: Python's Missing Battery (Course)
- Summing Values the Pythonic Way With sum() (Course)
- Manipulating ZIP Files With Python (Course)
- Writing Clean, Pythonic Code With namedtuple (Course)
- Using the Terminal on Windows (Course)
- Getters and Setters in Python (Course)
- Python Basics: Building Systems With Classes (Course)
- Using the Terminal on Linux (Course)
- Python Basics: Object-Oriented Programming (Course)
- Python Basics Exercises: File System Operations (Course)
- Using the Terminal on macOS (Course)
- Build Cross-Platform GUI Apps With Kivy (Course)
- Python Basics: File System Operations (Course)
- Context Managers and Using Python's with Statement (Course)
- Python Basics: Dictionaries (Course)
- Using Python's pathlib Module (Course)
- Everyday Project Packaging With pyproject.toml (Course)
- Deploy a Django App With Gunicorn and Nginx (Course)
- Refactoring: Prepare Your Code to Get Help (Course)
- Python Basics: Scopes (Course)
- Cool New Features in Python 3.11 (Course)
- Python Basics: Numbers and Math (Course)
- Using Multiple Constructors in Your Python Classes (Course)
- Python Basics: Strings and String Methods (Course)
- Sneaky REST APIs With Django Ninja (Course)
- Building Python Project Documentation With MkDocs (Course)
- Python Basics: Conditional Logic and Control Flow (Course)
- Building Command Line Interfaces With argparse (Course)
- Python Basics: Functions and Loops (Course)
- Building a URL Shortener With FastAPI and Python (Course)
- Caching in Python With lru_cache (Course)
- Exploring Special Function Parameters (Course)
- Python Basics: Finding and Fixing Code Bugs (Course)
- Managing Attributes With Python's property() (Course)
- Using the Python not Operator (Course)
- Using the Python and Operator (Course)
- Building a Site Connectivity Checker (Course)
- Python mmap: Doing File I/O With Memory Mapping (Course)
- Combining Data in pandas With concat() and merge() (Course)
- Write and Test a Python Function: Interview Practice (Course)
- Data Cleaning With pandas and NumPy (Course)
- Exploring Scopes and Closures in Python (Course)
- Using Python Class Constructors (Course)
- Testing Your Code With pytest (Course)
- Building a Django User Management System (Course)
- Exploring Keywords in Python (Course)
- Python REST APIs With FastAPI (Course)
- Using Python's datetime Module (Course)
- Python Basics: Code Your First Python Program (Course)
- Sorting Data in Python With pandas (Course)
- Counting With Python's Counter (Course)
- Exploring the Fibonacci Sequence With Python (Course)
- Starting With Linear Regression in Python (Course)
- Python any(): Powered Up Boolean Function (Course)
- Defining Python Functions With Optional Arguments (Course)
- Python's len() Function (Course)
- Looping With Python enumerate() (Course)
- Starting With Python IDLE (Course)
- Working With Pipenv (Course)
- Deploy Your Python Script on the Web With Flask (Course)