PEP 485: A Function for Testing Approximate Equality
TL;DR
PEP 485 introduced math.isclose()
to solve the fundamental problem of comparing floating-point numbers by testing if two values are “approximately equal” rather than exactly equal.
PEP 485 introduced math.isclose()
to solve the fundamental problem of comparing floating-point numbers by testing if two values are “approximately equal” rather than exactly equal.
A compilation of the most fascinating “Interesting!” facts from my Python blog posts to date, spotlighting three and then building some collections of other interesting features.
The textwrap module provides functions for formatting text blocks with intelligent line wrapping, indentation control, and paragraph formatting - perfect for creating clean output, documentation, and user interfaces.
PEP 465 introduced the @ operator for matrix multiplication, solving a major readability problem in scientific Python code by providing a dedicated operator that makes mathematical formulas translate directly into code.
The gzip module provides seamless compression and decompression of files using the gzip format, reducing file sizes by 60-90% while maintaining a simple interface compatible with standard file operations.
The struct module converts between Python values and C structs represented as bytes objects, enabling binary data processing for network protocols, file formats, and hardware communication with precise control over byte layout.
PEP 544 introduces Protocol classes that enable structural subtyping (static duck typing) - type checking based on what methods an object has rather than its inheritance hierarchy, making Python’s type system more flexible and duck-typing friendly.
The timeit module provides precise execution time measurement for small code snippets, automatically handling timing complexities and providing both programmatic and command-line interfaces for performance benchmarking.
The tempfile module creates secure temporary files and directories with automatic cleanup, preventing race conditions and ensuring cross-platform compatibility for safe temporary data handling.
The uuid module generates 128-bit universally unique identifiers using multiple methods - random (uuid4), time-based (uuid1), or namespace-based (uuid3/uuid5) - perfect for unique IDs in databases and distributed systems.
The secrets module provides cryptographically secure random generation for passwords, tokens, and security keys - use it instead of the random module for any security-sensitive applications.
The decimal module provides exact decimal arithmetic without floating-point precision errors, essential for financial calculations, scientific computing, and any application requiring precise decimal representation.
The urllib
package provides URL handling through four submodules: request
(fetch URLs), parse
(manipulate URLs), error
(exceptions), and robotparser
(robots.txt).
Unlike many languages that require external libraries, Python includes full-featured HTTP client capabilities right in the standard library!
The sys module provides access to interpreter variables like sys.argv (command-line arguments), sys.path (module search paths), sys.version, sys.exit(), and functions for interacting with the Python runtime environment.
PEP 604 introduced the |
operator for union types, allowing int | str
instead of Union[int, str]
for cleaner type annotations.
The |
operator for union types makes Python’s type hints look more like mathematical set notation - int | str
means “integer OR string”!
PEP 570 introduced the /
separator to mark positional-only parameters, giving API designers control over function call semantics and preventing keyword argument usage.
PEP 1 defines the purpose, format, and workflow for Python Enhancement Proposals (PEPs) - the formal mechanism for proposing new features, processes, and standards for the Python language and community.
The multiprocessing
module creates separate Python processes that bypass the GIL, enabling true parallel execution for CPU-intensive tasks.
Unlike threading, multiprocessing actually uses multiple CPU cores simultaneously - each process has its own Python interpreter and memory space!
The zipfile
module provides tools for creating, reading, and extracting ZIP archives with support for multiple compression methods and password protection.
The module supports ZIP64 extensions, allowing you to work with ZIP files larger than 4GB and containing more than 65,535 files - breaking traditional ZIP format limits!
After learning Python basics, dive into the Standard Library, explore PyPI packages, join the community, and tackle real-world projects.
Python has one of the most comprehensive standard libraries of any programming language - so much functionality is available without installing anything extra!