Watch Now This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: What Can You Do With Python?
If you’re new to programming and considering Python, knowing what you can do with it can be motivating. Python is used in many fields, including web and desktop development, data science, artificial intelligence (AI), automation, robotics, and more.
In this tutorial, you’ll explore tools, libraries, and project ideas that showcase Python’s versatility across these areas. By the end, you’ll know where to go next with your Python skills.
By the end of this tutorial, you’ll understand that:
- You can build web applications with frameworks like Django, Flask, and FastAPI, each suitable for different scales and use cases.
- Python supports CLI, TUI, and GUI development, giving you ways to create interactive tools from the terminal to full desktop applications.
- In data science and AI, libraries such as NumPy, pandas, scikit-learn, PyTorch, and Transformers power analysis, visualization, and machine learning.
- You can use Python for automation and DevOps, managing workflows, packaging, testing, and even cybersecurity tasks.
- Python also extends into embedded systems and robotics, with projects on Raspberry Pi, MicroPython, CircuitPython, and ROS.
Here, you’ll find Python’s most exciting use cases, with links to projects and resources that will help you start learning the language and applying your new skills right away.
Free Bonus: Python Cheat Sheet (PDF) Click to preview & download
Learn Python 3 fundamentals at a glance: data types, functions, classes, and more!
Take the Quiz: Test your knowledge with our interactive “What Can I Do With Python?” quiz. You’ll receive a score upon completion to help you track your learning progress:
Interactive Quiz
What Can I Do With Python?Test your knowledge of what Python can and can't do, from web and GUI apps to data science, CLI tools, and embedded systems.
Python in the Real World
Python is a high-level, multi-paradigm, and general-purpose programming language. As this definition implies, you can use Python for several purposes, from web development to data science, machine learning, artificial intelligence (AI), robotics, and more. Python’s real-world use cases are limitless.
People have successfully built many cool projects with Python. If you take a quick look at world-class companies like Google, YouTube, Meta (Facebook, Instagram), Spotify, Netflix, and others, you’ll note that they use Python to support their services and products.
Google has used Python from the start, and it has established itself as one of the tech giant’s main server-side languages. Guido van Rossum, Python’s creator, worked there for several years, overseeing the language’s development.
Instagram initially chose Python for its simplicity and the powerful Django framework, famously operating one of the largest Django deployments in the world. The platform continues to leverage Python, with Django powering its frontend servers to manage massive growth.
Spotify uses the language for data analysis and backend services. According to its team, Python’s ease of use leads to a lightning-fast development pipeline. Spotify performs a ton of analysis to give recommendations to its users, so it needs a productive tool that works well. Python to the rescue!
You’ll also find that Python has been vital for science and space exploration, with many exciting applications in robotics and hardware control. In this tutorial, you’ll explore the wide range of fields and areas where you can apply your Python skills.
Build Practical Software Products and Cool Projects
Python’s ecosystem provides a rich set of frameworks, tools, and libraries that allow you to build almost any kind of application—from web to desktop and mobile. You can even use Python to create video games.
Web Development
Web application development with Python is in high demand. In this field, you’ll find several well-established Python frameworks, libraries, and tools for developing cool web applications, APIs, and more.
Here are some of the most popular Python web frameworks:
| Framework | Description |
|---|---|
| Django | A high-level framework that encourages rapid web application development with a clean and pragmatic design. It allows you to focus on writing your applications without reinventing the wheel. |
| FastAPI | A fast and performant web framework for building web APIs. It’s built on top of modern Python type hinting features and enables asynchronous programming. |
| Flask | A lightweight framework primarily focused on creating WSGI web applications. It allows you to start quickly and scale up to complex applications if needed. |
| Tornado | A web framework and asynchronous networking library. It uses non-blocking network I/O, enabling you to write applications that can scale to tens of thousands of open connections. |
To get started with web development in Python, check out the following resources:
- Django for Web Development (Learning Path)
- Flask by Example (Learning Path)
- Using FastAPI to Build Python Web APIs
- Python and REST APIs: Interacting With Web Services
- Python Web Development Tutorials
- Python API Tutorials
If you want some practical project ideas for applying your web development skills right away, check out these tutorials:
- Python Web Applications: Deploy Your Script as a Flask App
- Get Started With FastAPI
- Get Started With Django: Build a Portfolio App
- Build a Personal Diary With Django and Python
- Build a Blog From Scratch With Django
- Python REST APIs With Flask, Connexion, and SQLAlchemy
- Build a Code Image Generator With Python
- Build a Flashcards App With Django
- Build a URL Shortener With FastAPI and Python
With so many Python-related career opportunities out there, it’s a great idea to have a personal portfolio. Feel free to give some of these projects a try. You don’t need to know anything about Django to get started with these step-by-step tutorials. They’re perfect if you’re itching to get hands-on with web development in Python.
CLI Development
Another field in which Python shines is in command-line interface (CLI) application development. CLI applications are everywhere and allow you to automate repetitive and boring tasks in your daily work by creating small or large tools for your command line.
In Python, you’ll find several CLI libraries and frameworks that can simplify your work and help you build command-line tools quickly:
| Library | Description |
|---|---|
argparse |
A standard-library module for creating command-line interfaces. It lets you declare positional and optional arguments, parses the command line, and automatically generates help, usage text, and error messages for invalid input. |
| Click | A third-party library for creating CLIs with Python decorators. It provides command groups, options and arguments, type conversion, prompts, environment variable support, and automatic help output. Designed to be configurable with sensible defaults. |
| Typer | A CLI framework built on Click that uses type hints, with automatic help messages and autocompletion for shells. |
To get started with CLI development, check out the following resources:
- Build Command-Line Interfaces With Python’s
argparse - Click and Python: Build Extensible and Composable CLI Apps
Additionally, if you want to jump into building a CLI project, then you can start with the following:
- Build a Command-Line To-Do App With Python and Typer
- Build a Python Directory Tree Generator for the Command Line
- Build Conway’s Game of Life With Python
- Build a Site Connectivity Checker in Python
Creating applications with a user-friendly and intuitive command-line interface is a valuable skill for any Python developer.
TUI Development
Text-based user interfaces (TUIs) let you build interactive apps that run in the terminal. They’re fast to start, keyboard-friendly, and great for dashboards, AI agents, and remote servers. Modern Python libraries make TUI development feel friendly by providing layout systems, widgets, color, styles, and even mouse support.
Here are popular Python options for building TUI apps:
| Library | Description |
|---|---|
| Rich | A powerful tool for terminal output. Supports colors, emojis, tables, progress bars, Markdown, syntax highlighting, tracebacks, and more. |
| Textual | A modern TUI framework that allows you to build full apps with widgets, reactive layouts, and styles. It runs in the terminal or a web browser using the same code. |
| prompt_toolkit | A third-party library providing building blocks for interactive shells and full-screen terminal applications. Supports multiline editing, auto suggestions, completion, Emacs and Vi key bindings, mouse interaction, and syntax highlighting. |
| asciimatics | A cross-platform TUI, animation, and effects engine that allows you to create ASCII animations on any platform. |
To get started with TUI development, check out the following resources:
- Python Textual: Build Beautiful UIs in the Terminal
- The Python Rich Package: Unleash the Power of Console Text
When you’re ready for practical projects, you can explore these tutorials:
In this series of tutorials, you’ll create fast, polished TUI apps that feel like lightweight desktop apps and run right in your terminal.
GUI Development
Creating traditional graphical user interface (GUI) applications for desktop environments is also an attractive option in Python. If you’re interested in building this kind of application, then Python has you covered with a wide range of GUI libraries, frameworks, and toolkits to choose from:
| Library | Description |
|---|---|
| Tkinter | A standard-library module that provides a Python interface to the Tk GUI toolkit. It lets you build cross-platform desktop GUI applications and is available on most Unix platforms and Windows systems. |
| PyQt | A set of Python bindings for the Qt application framework. It includes classes for building GUI applications and provides classes for networking, threads, SQL databases, and more. Supports the Windows, Linux, and macOS platforms. |
Qt for Python (PySide6) |
A project that provides the official set of Python bindings (PySide6) for the Qt framework. |
| Kivy | An open-source, cross-platform Python framework for rapid development of touch-friendly GUI applications such as multi-touch applications. It runs on Linux, Windows, macOS, Android, iOS, and Raspberry Pi. |
| wxPython | Python bindings to the wxWidgets C++ toolkit for building cross-platform desktop applications from a single codebase (Windows, macOS, Linux). It uses each platform’s native APIs. |
A quick way to start building your GUI applications is to use tkinter. This module is included in the Python standard library. Practice using tkinter and watch your vision materialize on the screen. Once you’ve got your feet wet, you can branch out and start working with other Python GUI toolkits.
To learn more about GUI programming with Python, check out the resources below:
- Create Graphical User Interfaces (Learning Path)
- GUI Programming With PyQt (Learning Path)
- Python GUI Programming Tutorials
If you want to start right away by creating a real-world GUI application, then you can build a calculator using PyQt. Completing this calculator project will help you grasp the fundamentals of this full-featured GUI framework, so you can start building impressive apps for your desktop immediately.
You can also work through other practical projects to help you out with your GUI programming journey. Take a look at the following resources:
- Build a Bulk File Rename Tool With Python and PyQt
- Build a Contact Book With Python, PyQt, and SQLite
- Build a Mobile Application With the Kivy Python Framework
These projects will guide you through the process of building GUI applications with PyQt and other Python GUI frameworks. They’ll also help you integrate a wide variety of other skills so you can create fully functional, real-world applications.
Game Development
Creating computer games is a great way to learn how to program, not just in Python but in any other programming language. To develop games, you’ll need to use variables, loops, conditional statements, functions, object-oriented programming, and more. Game development is an excellent way to synthesize multiple skills and interests, such as design, music, and programming.
Computer games have played an important role in programming. Many people get into programming because they love games and want to re-create their favorite games or build their own. Developing computer games can be a fun and rewarding experience, allowing you to enjoy the thrill of playing the game you just created.
You’ll find several tools, libraries, and frameworks for creating games quickly in the Python ecosystem. Here’s a small sample of them:
| Library | Description |
|---|---|
| Arcade | A Python library for creating 2D video games. It’s perfect for beginners because you don’t need to learn a complex game framework to start creating your own games. |
| Pygame | A set of Python modules designed for writing video games. It adds functionality on top of the SDL library, enabling you to create full-featured games and multimedia programs. The library is highly portable and runs on several platforms and operating systems. |
| pyglet | A Python library for creating games and other visually rich applications on Windows, macOS, and Linux. It supports windowing, user interface event handling, OpenGL rendering, image loading, as well as video and audio playback. |
To get started with game programming, check out the following resources:
- Python Game Development Tutorials
- Top Python Game Engines
- Pygame: A Primer on Game Programming in Python
You can use Python to create arcade games, adventure games, and puzzle games that you can deploy within a few hours. You can also code classic games, such as hangman, tic-tac-toe, rock paper scissors, and more.
If you want to dive into building your first game, then you can start with some of the following:
- Build a Hangman Game for the Command Line in Python
- Build a Tic-Tac-Toe Game With Python and Tkinter
- Build an Asteroids Game With Python and Pygame
- Build a Platform Game in Python With Arcade
With these resources, you’ll be able to start creating your own games with Python. You’ll start with command-line games, then move on to GUI-based games, and finally explore games that take advantage of libraries specifically designed for game development.
Dive Into Data Science and Artificial Intelligence
Data science is a field that involves cleaning, preparing, and analyzing data to extract knowledge from it. Data science combines statistics, mathematics, programming, and problem-solving skills to extract useful information from data.
Python plays a fundamental role in the data science and math fields. The language has become popular among scientists because of its readability, productivity, flexibility, and portability. The Python ecosystem around science has grown immensely. You’ll find mature Python solutions in almost every major field in math and science.
Python includes tools for machine learning (ML), artificial intelligence (AI), scientific computing, data analysis, and data visualization. The language also provides efficient tools for collecting, mining, and manipulating data.
Machine Learning
Machine learning can be the first step for someone interested in artificial intelligence. Machine learning studies algorithms that learn through experience. These algorithms build models based on samples of training data to make predictions and decisions.
Machine learning can be an intimidating field to get started with because the space is fast-moving and ever-changing. Here’s a summary of some of the most popular tools for doing machine learning with Python:
| Library | Description |
|---|---|
| Keras | An industrial-strength deep learning framework with an API designed for humans. It allows you to run new experiments and try more ideas quickly, and follows best practices for reducing cognitive load. |
| NLTK | A platform for building Python programs to work with human language data. It provides libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoning. |
| PyTorch | An open-source machine learning framework that accelerates the path from research prototyping to production deployment. |
| scikit-learn | An open-source machine learning library that supports supervised and unsupervised learning. An efficient tool for predictive data analysis that’s accessible and reusable in various contexts. |
| TensorFlow | An end-to-end, open-source platform for machine learning featuring a comprehensive ecosystem of tools, libraries, and community resources for building and deploying ML-powered applications. |
To get started with machine learning, check out the Python Machine Learning Tutorials.
Generative AI
Generative AI systems can create new content, including text, images, audio, video, and code, by learning patterns from data and producing novel outputs from natural language prompts. In practice, Python is the glue language that ties together language model APIs, orchestration frameworks, vector databases, and deployment stacks. This is why many tools in this field ship with first-class Python support.
Here are some of the most popular Python libraries and SDKs for building generative AI applications:
| Library/SDK | Description |
|---|---|
| Transformers | A Hugging Face library with a unified API for loading, fine-tuning, and running large language models (LLMs) for text generation, chat, summarization, translation, and more. |
| Diffusers | A Hugging Face library providing diffusion-model pipelines for text-to-image, image-to-image, inpainting, and emerging audio and video. |
| OpenAI Python | A Python SDK for the OpenAI API that supports chat, text generation, images, audio, and embeddings, with synchronous and asynchronous clients and streaming. |
| LangChain | A framework for composing LLM apps using prompts, tools, chains, agents, and retrieval. |
| LlamaIndex | A data framework for building LLM-powered agents over your data. |
To get started with generative AI in Python, begin by exploring Hugging Face Transformers: Leverage Open-Source AI in Python or build a practical real-world project in Build an LLM RAG Chatbot With LangChain.
Vibe Coding and AI Agents
Two fast-moving trends are reshaping how Python developers work today:
-
Vibe coding: A coding philosophy where you describe goals in natural language and lean on AI coding tools and agents to quickly iterate from idea to working code. It’s spreading in teams because it accelerates prototyping and boosts productivity. However, it still needs code review, testing, and guardrails.
-
AI agent creation: A branch of AI engineering that goes beyond prompting LLMs to build stateful tools (agents) capable of planning, executing actions, leveraging external tools, and coordinating work.
Here are modern tools you can use in Python to start vibe coding and create your own AI agents:
| Tool | Description |
|---|---|
| GitHub Copilot Chat | An AI coding assistant with a coding agent mode that can take tasks, such as fixing bugs or adding features, run them in a sandbox, and open a PR. |
| Cursor | A code editor with integrated AI chat, agents, and natural-language coding. It’s built around AI-coding workflows. |
| Codex CLI | A coding agent that runs in your terminal (macOS and Linux), letting you interact with your local codebase using natural language prompts. It can perform several tasks like editing files, running commands, writing code and documentation, and debugging code. |
| Gemini CLI | An AI-powered command-line agent designed to embed Gemini models in developers’ terminals. It supports file manipulation, prompt-based tool execution, and integrates with external tools. |
| Claude Code | An AI-powered agentic CLI tool that runs in the terminal and integrates with your IDE to turn natural language instructions into repository-aware code generation, test runs, and pull requests. |
| LangGraph | A framework for stateful, cyclic agent workflows and multi-actor graphs. It’s great for building reliable, long-running agents. |
| CrewAI | An open-source library for multi-agent orchestration with roles, tools, memory, guardrails, and observability. |
To get started with AI-assisted coding and AI agent creation, check out the following resources:
- Python Coding With AI
- AI Coding Tools Glossary
- GitHub Copilot: Fly With Python at the Speed of Thought
- Write Unit Tests for Your Python Code With ChatGPT
- LangGraph: Build Stateful AI Agents in Python
Working through these resources helps you learn Python efficiently and with real-world focus. The official documentation for these libraries and tools includes up-to-date tutorials and hands-on projects so you can apply what you learn right away.
Scientific Computing
Another field in which Python plays a significant role is scientific computing. Scientists use advanced computing capabilities available through supercomputers, clusters of computers, and even desktop and laptop computers to understand and solve complex problems.
Here are some of the libraries you can use for scientific computing in Python:
| Library | Description |
|---|---|
| NumPy | A fundamental package for scientific computing with Python. It provides a high-level syntax and offers comprehensive mathematical functions, random number generators, linear algebra routines, Fourier transforms, and more. |
| SciPy | A Python-based collection of open-source software for mathematics, science, and engineering. |
| SimPy | A process-based, discrete-event simulation framework based on Python that helps you simulate real-world systems like airports, customer service, highways, and more. |
To get started with scientific computing, check out the following resources:
- Math for Data Science (Learning Path)
- Python Data Science Tutorials
- NumPy, SciPy, and pandas: Correlation With Python
- SimPy: Simulating Real-World Processes With Python
These libraries and tools are fundamental to data science in Python. Some are core components of higher-level libraries for machine learning, data analysis, and other tasks.
Data Analysis and Visualization
Data analysis is a process of collecting, inspecting, cleansing, transforming, and modeling data to discover useful information, make predictions, arrive at conclusions, support decision-making processes, and more. Data analysis is closely related to data visualization, which deals with the graphical representation of data.
In Python, you’ll also find mature and well-established libraries for data analysis and data visualization. Here are some of them:
| Library | Description |
|---|---|
| pandas | A powerful and flexible open-source tool for analyzing and manipulating data. It provides fast, flexible, and expressive data structures for working with tabular or labeled data. |
| Polars | A high-performance DataFrame library designed to provide fast and efficient data processing capabilities. |
| Matplotlib | A library for creating static, animated, and interactive data visualizations in Python. |
| seaborn | A Python data visualization library based on Matplotlib. It provides a high-level interface for drawing attractive and informative statistical graphics that allow you to explore and understand your data. It integrates closely with pandas data structures. |
| Bokeh | An interactive data visualization library for web browsers. It provides tools for constructing elegant and versatile graphics. It can help you make interactive plots, dashboards, and data applications. |
| Dash | A Python framework for building web analytics applications. It’s ideal for building data visualization applications with custom user interfaces that render in the browser. |
To get started with data analysis and visualization, check out the following resources:
- pandas for Data Science (Learning Path)
- Data Collection & Storage (Learning Path)
- Data Science With Python Core Skills (Learning Path)
- Data Visualization With Python (Learning Path)
- Python Data Visualization Tutorials
- Develop Data Visualization Interfaces in Python With Dash
- Python Polars: A Lightning-Fast DataFrame Library
If you want to level up your data analysis skills by building a practical project, then you can create a gradebook with Python and pandas. This step-by-step project guides you through the process of creating a Python script that loads the grade data and calculates letter grades for a group of students.
The project involves loading data from a comma-separated values (CSV) file, exploring the data, and calculating and plotting the grades using pandas.
Web Scraping and Automation
The web is a major source of data for data science. Web scraping is the process of collecting and parsing raw data from websites using automated tools or crawlers. Web automation goes a step further by driving a browser to load pages, click elements, and submit forms, which is useful when content requires interaction or is dynamically rendered.
Python provides widely used libraries for both scraping and automation. Here are some of them:
| Library | Description |
|---|---|
| Beautiful Soup | A Python library for pulling data out of HTML and XML files into parse trees. The library provides methods and Pythonic idioms to navigate, search, modify, and extract information from parse trees. |
requests |
An elegant and powerful HTTP library for Python. It provides an intuitive and concise API designed for human beings. |
urllib.request |
A standard-library module that defines functions and classes to help you open URLs. It also allows you to work with basic and digest authentication, redirections, cookies, and more. |
aiohttp |
An asynchronous HTTP client and server for asyncio. |
| Scrapy | A fast, high-level web crawling and web scraping framework. It allows you to crawl websites and extract structured data from their pages. |
| Selenium | A web automation tool that allows you to use Python to programmatically interact with web pages, including those with dynamic, JavaScript-generated content. |
To learn more about web scraping, check out the following resources:
Once you know the basics of web scraping, you can dive into practical projects to improve your skills and target both static and dynamic sites:
- Beautiful Soup: Build a Web Scraper With Python
- Web Scraping With Scrapy and MongoDB
- Modern Web Automation With Python and Selenium
After completing these projects, you’ll be able to apply the same processes and tools to any other static or dynamic websites out there. These skills allow you to extract relevant information and use it in your applications. Go ahead and give it a try!
Note: Before using your Python skills for web scraping, review the target website’s use policy to make sure that scraping it with automated tools doesn’t violate its terms of use.
Thanks to the internet and, increasingly, the internet of things (IoT), you now have access to a vast amount of data that wasn’t available years ago.
Automate, Speed Up, and Secure Real-World Workflows
Computers are extremely good at performing repetitive and boring tasks. They can be doing the same thing for a long time without making mistakes. This is a valuable feature that can help you make your work more pleasant and productive.
With Python, you can automate many tasks in your workflow. You can automate and manage your DevOps operations, build an effective Python development environment, handle the packaging and deployment process in your development cycle, test your software, manage your database systems, and more.
DevOps
DevOps is a set of practices that combines software development and IT operations to shorten the software delivery lifecycle and improve reliability. It helps teams manage planning, development, testing, packaging, deployment, monitoring, and ongoing operations.
Python is one of the primary technologies for DevOps. Its flexibility and accessibility make Python ideal for the job, enabling development teams to improve their workflow and become more efficient and productive.
In the Python ecosystem, you’ll find many popular DevOps tools—and you can control most of them with Python. Here are a few:
| Library | Description |
|---|---|
| Ansible | A tool for software provisioning, configuration management, and application deployment. It enables infrastructure as code. |
| Docker Compose | A tool for defining and running multicontainer Docker applications. You can configure your application’s services with a YAML file, and then create and start the services from your configuration file. It’s suitable for production, staging, development, and testing. |
| GitHub Actions | A CI/CD and automation platform built into GitHub. You use YAML for defining workflows that run in response to repository events like pushes, pull requests, and schedules. It supports building, testing, deploying, and automating other parts of the development lifecycle. |
To get started with DevOps, check out the following resources:
- Python DevOps Tutorials
- DevOps With Python (Learning Path)
- The subprocess Module: Wrapping Programs With Python
- Continuous Integration and Deployment for Python With GitHub Actions
- Build Robust Continuous Integration With Docker and Friends
With these resources, you’ll develop various skills and learn to use tools and technologies that any DevOps engineer working with Python benefits from.
Development Environment
Creating a productive and effective environment for you and your teammates is a fundamental part of software development. Python has a comprehensive set of tools that enable you to isolate your packages, libraries, and Python version in per-project virtual environments.
Here are some of the most popular tools:
| Tool | Description |
|---|---|
pip |
The standard package management tool for Python, included by default with most Python installations. It installs packages from PyPI and other indexes. |
uv |
An all-in-one Python package and project manager written in Rust. It combines several roles previously handled by separate tools like pip, virtualenv, pyenv, pipx, poetry, and twine into a unified workflow. |
pipenv |
A tool that allows you to create and manage virtual environments for your projects, providing a way to use pip and virtualenv together through a unified interface. |
pipx |
A tool that helps you install and run end-user applications written in Python within isolated environments. It creates separate environments for each application and its associated packages, allowing the applications to be available in your command line or shell. |
pyenv |
A tool for installing and managing multiple Python versions. It lets you switch between them quickly and define per-project Python versions. |
conda |
An open-source package and environment management system. It allows you to quickly install, run, and update packages and their dependencies, and helps you find and install packages. |
To learn more about building an effective development environment, check out the following resources:
- Python Development Tools Tutorials
- Perfect Your Python Development Setup (Learning Path)
- An Effective Python Environment: Making Yourself at Home
- Using Python’s
pipto Manage Your Projects’ Dependencies - Managing Python Projects With uv: An All-in-One Solution
- Managing Multiple Python Versions With
pyenv
Learning how to build an effective Python environment for your development projects will push your productivity to the next level, so it’s important to spend time refining this skill.
Concurrency and Async Programming
When your program waits on the network, disk, or other slow I/O, it can feel sluggish even though your CPU is mostly idle. Concurrency lets your code make progress on other work while it waits. In Python, you’ll typically pick from three models:
- Threads or
concurrent.futuresfor many simple I/O-bound tasks asynciofor highly concurrent I/O withasyncandawaitmultiprocessingfor CPU-bound tasks to bypass the GIL and use multiple cores
A good rule of thumb is to use threads or asyncio for I/O-bound workloads, and multiprocessing for CPU-bound parallelism.
Here are popular options for concurrency and asynchronous programming in Python:
| Library | Description |
|---|---|
threading |
The standard way to run multiple tasks concurrently in one process. Great for I/O-bound work and simple background tasks, but keep thread safety for shared state in mind. |
concurrent.futures |
A high-level library for thread and process pools via ThreadPoolExecutor and ProcessPoolExecutor. Since Python 3.14, includes a third executor: InterpreterPoolExecutor. |
multiprocessing |
A library for running code in parallel across processes to use multiple CPU cores and avoid the GIL for CPU-heavy tasks. |
asyncio |
A module for event loops with async and await that allows scalable I/O-bound concurrency. Useful for HTTP clients and servers, and many sockets. |
aiohttp |
An async HTTP client/server built on asyncio. It supports sessions, connection pooling, and streaming. |
| Trio | A user-friendly async framework that emphasizes structured concurrency and correctness, serving as an alternative to asyncio. |
To get started with concurrency and asynchronous programming in Python, check out the following resources:
- Concurrency and Async Programming (Learning Path)
- Speed Up Your Python Program With Concurrency
- Python’s
asyncio: A Hands-On Walkthrough - An Intro to Threading in Python
- Bypassing the GIL for Parallel Processing in Python
- Socket Programming in Python (Guide)
If you want to start with a hands-on project, then try building an async HTTP downloader using asyncio and aiohttp by following the course Hands-On Python 3 Concurrency With the asyncio Module. Then, compare its performance with a ThreadPoolExecutor to understand the trade-offs between the different concurrency models.
Software Packaging and Deployment
Another critical part of your software development cycle is to package, distribute, and deploy your products to your end users or clients. In Python, a quick and popular way to share applications and libraries is to publish them to the Python Package Index (PyPI).
Here are some of the tools you can use for this purpose:
| Tool | Description |
|---|---|
| Flit | A tool that provides a quick way to put your Python packages and modules on PyPI. It helps you set up the information about your package so you can publish it to PyPI with minimal effort. |
| Poetry | A tool for creating, building, installing, and packaging Python projects. It also allows you to publish your projects to PyPI. It tracks and resolves your project’s dependencies. It uses your existing virtual environments or creates new ones to isolate your packages from your system-wide Python installation. |
| PyInstaller | A tool that freezes Python applications into standalone executables compatible with Windows, GNU/Linux, macOS, and others. |
| Setuptools | A collection of enhancements to the Python distutils that allows you to build and distribute Python distributions, especially those that depend on other packages. |
| Twine | A utility for publishing Python packages on PyPI. It allows you to upload source and binary distributions of your projects. |
| Hatch | An extensible Python project manager that supports plugins, dynamic configurations, and multiple environment variants. |
zipapp |
A standard-library module that creates executable ZIP archives containing Python code. It supports both CLI and API usage. It can bundle Python applications into .pyz files, including a __main__.py entry point. |
To get started with Python packaging, check out the following resources:
- How to Publish an Open Source Python Package to PyPI
- Using PyInstaller to Easily Distribute Python Applications
- Pipenv: A Guide to the Python Packaging Tool
- Python’s
zipapp: Build Executable Zip Applications
With these resources, you can get started with packaging and deploying your Python applications and libraries to your end users, clients, and colleagues. Also, the Python Packaging Authority provides a lot of useful information and tutorials to help you distribute Python packages with modern tools.
Database Systems
Most of the applications you’ll build in your career as a developer will interact with data in some way. This interaction commonly happens through a database management system (DBMS) that allows you to define, create, maintain, and control access to your database or databases.
To connect and manipulate your databases with Python, you have several options that include both standard-library and third-party packages. You also have options for SQL and NoSQL databases in Python.
Object-relational mapping tools (ORMs) are another important type of tool you’ll probably use to work with databases in Python. These tools allow you to use object-oriented programming to create and manipulate your databases.
Here are some Python libraries you can use for connecting and operating databases:
| Library | Database | Description |
|---|---|---|
| MongoEngine | MongoDB | A document-object mapper for working with MongoDB using object-oriented programming in Python. |
| MySQL Connector/Python | MySQL | A self-contained Python driver for communicating with MySQL servers. |
| Psycopg | PostgreSQL | A PostgreSQL database adapter for Python. |
| PyMongo | MongoDB | A Python distribution containing tools for working with MongoDB databases. It provides a native Python driver for this type of database system. |
| SQLAlchemy | SQL | A Python SQL toolkit and object-relational mapper for SQL databases. |
sqlite3 |
SQLite | A lightweight, disk-based database that doesn’t require a separate server process. It allows you to access databases using a subset of SQL. It’s freely available and comes in the Python standard library. |
| redis-py | Redis | The official Python client for Redis, an in-memory data structure store used as a database, cache, and message broker. |
| duckdb | DuckDB | A high-performance analytical database system designed to be fast, reliable, portable, and easy to use. |
To get started with databases, click the links in the table above and check out the resources below:
Creating and working with databases is a powerful way to manage data in your Python applications. Databases add significant functionality and versatility to your programs, enabling you to provide exciting features to your users and clients. Managing databases is a fundamental skill in your developer education.
Software Testing
When you’re starting out with Python or programming, you might begin by creating small programs and scripts that you can run and test manually to make sure they work as expected. However, when your programs grow and get more complex, testing them by hand becomes nearly impossible. This is when automated testing comes into play.
You’ll need a reliable testing process to help you identify bugs and prevent them from reaching production. Testing can also drive your code’s design and help you check non-functional features such as performance, security, usability, regulatory compliance, and more. Testing, therefore, is an important component of software development.
Python has great tools for code testing. You can use these tools to write consistent tests and run them automatically. Here’s a brief overview of some of these tools:
| Tool | Description |
|---|---|
doctest |
A standard-library module that searches your docstrings for pieces of text that look like interactive Python sessions and executes them to verify that they work correctly. |
unittest |
A unit testing framework available in the Python standard library. It supports test automation, setup and teardown of tests, aggregation of tests into collections, and more. |
pytest |
A robust and mature third-party testing framework that allows you to write and automate tests. It can scale from small unit tests to complex functional tests for your applications and libraries. |
To get started with testing, check out the following resources:
As a developer, you need to produce reliable code that works correctly. This means that you need to test your code every time you change it or add new features. Automated tests are the way to go in these situations.
Beyond testing your code’s functionality, you’ll also want to ensure it follows best practices. To stay on top of this, learn about Python Code Quality: Best Practices and Tools and linters such as Ruff: A Modern Python Linter for Error-Free and Maintainable Code.
Cybersecurity and Ethical Hacking
Python has gained popularity among cybersecurity professionals and ethical hackers with its clean syntax, cross-platform support, and rich ecosystem of specialized libraries. It excels at building tools for network scanning, exploitation, reconnaissance, and automation, making it indispensable in building and testing digital defenses.
Here are some of the most useful Python libraries and modules for security and ethical hacking:
| Library | Description |
|---|---|
| Scapy | A versatile tool for creating, sending, sniffing, and analyzing network packets. Ideal for custom spoofing, traceroutes, and firewall testing. |
| Paramiko | A Python SSH library useful for automating login workflows, remote command execution, or brute-force detection setups. |
| python-nmap | A Python library that interfaces with the Nmap utility to perform port scanning, service enumeration, and host discovery from within Python scripts. |
| Cryptography | Offers encryption and decryption tools for analyzing or crafting secure payloads and assisting in password-cracker creation. |
Only run these and related tools on systems you own or have explicit permission to test. Unauthorized scanning or hacking—even with good intentions—is illegal and unethical.
Develop Embedded Systems and Robots
Writing your own applications in Python is cool, but writing code that controls how hardware systems and robots work can be even cooler! Fields like internet of things, home automation, self-driving cars, and robotics have become more and more popular with advances in science and technology.
Python has gradually jumped into the world of sensors, electrical motors, circuits, microcontrollers, and robots. Today, you can find several Python projects that move in that direction. Here are some of them:
| Library | Description |
|---|---|
| BBC micro:bit | A pocket-sized computer that introduces you to how software and hardware work together and is programmable with Python. |
| CircuitPython | A programming language designed to simplify experimenting and learning to code on low-cost microcontroller boards. |
| MicroPython | A lean and efficient implementation of Python. It includes a small subset of the Python standard library and is optimized to run on microcontrollers and in constrained environments. |
| PythonRobotics | A compilation of robotics algorithms with visualizations. It focuses on autonomous navigation. Its goal is to help you understand the basic ideas behind each robotic algorithm it provides. |
| Raspberry Pi | A general-purpose, Linux-based computer with a complete operating system and graphical desktop (GUI), capable of multitasking. Python is preinstalled on Raspberry Pi OS. |
| rospy | A client library for ROS (Robot Operating System). Its API enables Python programmers to quickly interface with ROS to create complex and reliable robot behaviors. |
To get started with embedded Python, check out:
- MicroPython: An Intro to Programming Hardware in Python
- Episode 5: Exploring CircuitPython
- Episode 161: Resources and Advice for Building CircuitPython Projects
- Embedded Python: Build a Game on the BBC micro:bit
If you want to start creating a hardware-related project with Python, then look at how to build physical projects with Python on the Raspberry Pi. In this project, you’ll learn how to set up a Raspberry Pi, run Python code on it, read input from its sensors, send signals to its electronic components, and more.
What You Probably Shouldn’t Do With Python
Python is a highly versatile language, and there’s a lot you can do with it. However, you can’t do everything. There are things Python isn’t well-suited for.
As an interpreted language, Python has trouble interacting with low-level hardware. You’d have a problem if you wanted to write a device driver or an operating system with Python. You’re better off sticking with C or C++ for low-level applications.
However, even that might not be true for much longer. As a testament to Python’s flexibility, there are people out there who are working on projects that extend Python’s usability to low-level interactions. MicroPython and CircuitPython are just some of these projects designing low-level capabilities for Python.
What Else Can I Do With Python?
The list of ideas in this tutorial isn’t exhaustive. There are countless other fields you can work in with Python. If you’re looking for practical projects that Python is well suited for, then check out 13 Project Ideas for Intermediate Python Developers to find inspiration.
You can also do your own research to find projects that pique your interest. If you’re not sure where to begin, then follow Real Python on X. You’ll find cool and interesting Python projects from the community there. Maybe you’ll find something you can’t wait to contribute to!
Conclusion
You’ve explored the remarkable breadth of possibilities available to you as a Python programmer. From building web, desktop, and terminal applications to diving into data science, automation, DevOps, AI, and robotics. You now have a clear sense of Python’s versatility and the powerful libraries and frameworks at your disposal.
Now you’re aware of tools and practical project ideas across each area, making it easier to choose the most exciting next steps in your Python journey.
In this tutorial, you’ve learned that you can use Python to:
- Build web, CLI, TUI, and GUI applications using popular Python frameworks and libraries
- Apply Python to data science, machine learning, and generative AI with specialized tools
- Automate tasks, run DevOps, and manage workflows
- Leverage cybersecurity, software testing, and database management
- Develop embedded systems and robots using hardware-friendly Python projects
With these skills, you can build projects that solve real problems, automate tasks, analyze data, and bring hardware to life. Your Python journey can take any direction, supported by the tools and resources you need to succeed.
Frequently Asked Questions
Now that you have some experience with what you can do with Python, you can use the questions and answers below to check your understanding and recap what you’ve learned.
These FAQs are related to the most important concepts you’ve covered in this tutorial. Click the Show/Hide toggle beside each question to reveal the answer.
You can build web apps, desktop apps, terminal tools, mobile apps, games, AI agents, and even control robots with Python.
You use Python in data science and AI because it has a broad ecosystem of specialized libraries like NumPy, pandas, scikit-learn, PyTorch, and many others that make analysis and machine learning accessible and straightforward. The language’s readability, clear syntax, learning resources, and community support facilitate experimentation and innovation, even for those without a computer science background.
You can use Python scripts to handle repetitive tasks, manage DevOps pipelines, automate your tests, and distribute your software. Automation boosts your productivity and reduces human errors that can occur in repetitive tasks.
Yes, you can run Python on devices like Raspberry Pi, micro:bit, and microcontrollers with MicroPython or CircuitPython. These tools let you control sensors, motors, and hardware components directly.
You can use Python to build generative AI applications with libraries like Transformers, Diffusers, and LangChain. These tools let you run large language models (LLMs), generate images, and create AI agents that combine prompts, tools, and memory to act on your data.
Vibe coding is when you describe your coding goals in natural language and let AI coding tools or agents help you write and refine the code quickly. You then review, test, and edit the results.
You build AI agents in Python using frameworks like LangChain, LangGraph, or CrewAI. These tools let you connect large language models with tools, memory, and workflows so your agents can plan tasks and act on data.
You should avoid writing low-level software like operating systems or device drivers in Python. These tasks need faster, lower-level languages such as C or C++.
Take the Quiz: Test your knowledge with our interactive “What Can I Do With Python?” quiz. You’ll receive a score upon completion to help you track your learning progress:
Interactive Quiz
What Can I Do With Python?Test your knowledge of what Python can and can't do, from web and GUI apps to data science, CLI tools, and embedded systems.
Watch Now This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: What Can You Do With Python?







