Table of Contents
- Introduction
- Built-in Functions: The Foundation of Python
- Python Standard Libraries: Batteries Included
- Advanced Standard Libraries: Taking It Further
- Best Practices for Using Built-ins and Libraries
- Conclusion
- References
Built-in Functions: The Foundation of Python
Built-in functions are pre-defined, globally accessible tools that require no imports. They handle common tasks like input/output, data manipulation, and type conversion. Python’s builtins module (implicitly imported) contains over 70 such functions—here are the most essential.
2.1 Core Built-in Functions
These functions form the backbone of everyday Python programming:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
Outputs objects to a stream (default: console). Customize separators, endings, or output files.
print("Hello", "World", sep=" 🐍 ", end="!\n") # Output: Hello 🐍 World!
len(obj)
Returns the length of an object (strings, lists, dictionaries, etc.).
len("Python") # 6
len([1, 2, 3, 4]) # 4
len({"name": "Alice", "age": 30}) # 2
input([prompt])
Reads user input from the console as a string.
name = input("Enter your name: ")
print(f"Hello, {name}!") # Output depends on user input
type(obj) and isinstance(obj, class)
type() returns the type of an object; isinstance() checks if an object is an instance of a class (including subclasses).
type(42) # <class 'int'>
isinstance("hello", str) # True
isinstance(True, int) # True (booleans are subclasses of integers)
2.2 Data Structure Manipulation Functions
These functions simplify working with lists, tuples, dictionaries, and sets:
sorted(iterable, key=None, reverse=False)
Returns a new sorted list from an iterable (does not modify the original). Use key for custom sorting logic.
numbers = [3, 1, 4, 1, 5]
sorted(numbers) # [1, 1, 3, 4, 5]
sorted(numbers, reverse=True) # [5, 4, 3, 1, 1]
# Sort strings by length
words = ["apple", "banana", "cherry"]
sorted(words, key=lambda x: len(x)) # ['apple', 'cherry', 'banana']
sum(iterable, start=0)
Returns the sum of items in an iterable, plus an optional start value.
sum([1, 2, 3]) # 6
sum((10, 20), start=5) # 35 (10+20+5)
sum([[1], [2]], start=[]) # [1, 2] (concatenates lists)
max(iterable, *[, key, default]) and min(iterable, *[, key, default])
Return the largest/smallest item in an iterable. Use key for custom comparisons.
max([3, 1, 4]) # 4
min("hello") # 'e' (lexicographical order)
# Find the student with the highest grade
students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
max(students, key=lambda x: x[1]) # ('Bob', 92)
all(iterable) and any(iterable)
all() returns True if all items in the iterable are truthy; any() returns True if at least one item is truthy.
all([True, 1, "hello"]) # True
all([True, 0, "hello"]) # False (0 is falsy)
any([False, "", 0, 42]) # True (42 is truthy)
2.3 Type Conversion Functions
Convert between Python’s core data types:
int(x, base=10), float(x), str(x)
Convert to integer, float, or string.
int("42") # 42
int("1010", base=2) # 10 (binary to decimal)
float("3.14") # 3.14
str(2023) # "2023"
list(iterable), tuple(iterable), set(iterable), dict(**kwargs)
Convert to list, tuple, set, or dictionary.
list("hello") # ['h', 'e', 'l', 'l', 'o']
tuple([1, 2, 3]) # (1, 2, 3)
set([1, 2, 2, 3]) # {1, 2, 3} (removes duplicates)
dict(name="Alice", age=30) # {'name': 'Alice', 'age': 30}
2.4 Iteration and Functional Programming Helpers
These functions streamline working with iterables (lists, tuples, generators, etc.):
map(function, *iterables)
Applies a function to each item in an iterable and returns a generator (use list() to convert to a list).
numbers = [1, 2, 3]
squared = map(lambda x: x**2, numbers)
list(squared) # [1, 4, 9]
filter(function, iterable)
Returns items from an iterable for which the function returns True.
even_numbers = filter(lambda x: x % 2 == 0, [1, 2, 3, 4])
list(even_numbers) # [2, 4]
zip(*iterables)
Pairs items from multiple iterables into tuples, stopping at the shortest iterable.
names = ["Alice", "Bob"]
ages = [30, 25]
list(zip(names, ages)) # [('Alice', 30), ('Bob', 25)]
enumerate(iterable, start=0)
Returns tuples of (index, value) for items in an iterable.
for i, fruit in enumerate(["apple", "banana"], start=1):
print(f"{i}. {fruit}")
# Output:
# 1. apple
# 2. banana
2.5 Introspection Functions
Explore objects and their properties:
help([object])
Displays documentation for an object (e.g., functions, classes).
help(print) # Shows the docstring for print()
dir([object])
Returns a list of attributes and methods for an object.
dir(str) # Lists all string methods (e.g., 'upper', 'split')
Python Standard Libraries: Batteries Included
Python’s standard library is a collection of modules (libraries) bundled with Python, covering everything from file I/O to networking. No need for pip—just import and use!
3.1 Data Handling: json and csv
json: Serialize/Deserialize JSON Data
JSON (JavaScript Object Notation) is ubiquitous for data exchange. The json module simplifies working with JSON.
import json
# Serialize Python dict to JSON string
data = {"name": "Alice", "age": 30, "hobbies": ["reading", "hiking"]}
json_str = json.dumps(data, indent=2) # `indent` for pretty-printing
print(json_str)
# Output:
# {
# "name": "Alice",
# "age": 30,
# "hobbies": [
# "reading",
# "hiking"
# ]
# }
# Deserialize JSON string to Python dict
json_data = '{"name": "Bob", "age": 25}'
python_dict = json.loads(json_data)
print(python_dict["name"]) # "Bob"
csv: Read/Write CSV Files
CSV (Comma-Separated Values) is common for tabular data. Use csv.reader/csv.writer for basic tasks, or csv.DictReader/csv.DictWriter to work with headers.
import csv
# Write to CSV
with open("users.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "age"])
writer.writeheader() # Write column headers
writer.writerow({"name": "Alice", "age": 30})
writer.writerow({"name": "Bob", "age": 25})
# Read from CSV
with open("users.csv", "r") as f:
reader = csv.DictReader(f)
for row in reader:
print(f"{row['name']} is {row['age']} years old")
# Output:
# Alice is 30 years old
# Bob is 25 years old
3.2 File System Interaction: os and pathlib
os: Low-Level File System Operations
The os module provides tools for interacting with the operating system (e.g., navigating directories, creating files).
import os
print(os.getcwd()) # Get current working directory
os.listdir(".") # List files in current directory
os.makedirs("new_dir", exist_ok=True) # Create directory (no error if exists)
pathlib: Object-Oriented Path Handling
pathlib (Python 3.4+) offers a more intuitive, object-oriented alternative to os.path.
from pathlib import Path
path = Path("new_dir/file.txt")
path.parent.mkdir(parents=True, exist_ok=True) # Create parent dirs if needed
path.touch() # Create empty file
print(path.exists()) # True
print(path.name) # "file.txt"
print(path.suffix) # ".txt"
3.3 Networking: urllib
Fetch data from the web with urllib.request (Python’s built-in HTTP client).
from urllib.request import urlopen
url = "https://example.com"
with urlopen(url) as response:
html = response.read().decode("utf-8") # Read and decode HTML
print(html[:200]) # Print first 200 characters
3.4 Date and Time: datetime
Handle dates, times, and time zones with the datetime module.
from datetime import datetime, timedelta
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S")) # Format: 2023-10-05 14:30:00
# Add 1 week to current time
next_week = now + timedelta(weeks=1)
print(next_week.strftime("%Y-%m-%d"))
3.5 Math and Statistics: math, random, statistics
math: Basic Math Operations
import math
print(math.pi) # 3.141592653589793
print(math.sqrt(25)) # 5.0
print(math.factorial(5)) # 120 (5*4*3*2*1)
random: Generate Random Numbers
import random
print(random.randint(1, 10)) # Random integer between 1-10
print(random.choice(["apple", "banana", "cherry"])) # Random choice from list
statistics: Descriptive Statistics
from statistics import mean, median, stdev
data = [1, 2, 3, 4, 5]
print(mean(data)) # 3.0
print(median(data)) # 3
print(stdev(data)) # 1.5811... (sample standard deviation)
Advanced Standard Libraries: Taking It Further
These libraries are part of the standard library but offer advanced functionality for specific use cases.
4.1 collections: Enhanced Data Structures
Extend Python’s built-in data structures with specialized tools:
-
namedtuple: Immutable tuples with named fields (like lightweight classes).from collections import namedtuple Point = namedtuple("Point", ["x", "y"]) p = Point(3, 4) print(p.x, p.y) # 3 4 -
deque: Double-ended queue for O(1) appends/pops from both ends (faster than lists for this use case).from collections import deque dq = deque([1, 2, 3]) dq.append(4) # deque([1, 2, 3, 4]) dq.popleft() # deque([2, 3, 4]) -
defaultdict: Dictionary with default values for missing keys (avoidsKeyError).from collections import defaultdict counts = defaultdict(int) # Default to 0 for new keys counts["apple"] += 1 print(counts["apple"]) # 1 print(counts["banana"]) # 0 (no KeyError!)
4.2 itertools: Efficient Iteration Tools
Generate and manipulate iterables with high-performance functions.
-
product: Cartesian product of iterables (like nested loops).from itertools import product colors = ["red", "blue"] sizes = ["S", "M"] for color, size in product(colors, sizes): print(f"{color} {size}") # red S, red M, blue S, blue M -
chain: Concatenate multiple iterables.from itertools import chain list1 = [1, 2] list2 = [3, 4] combined = chain(list1, list2) print(list(combined)) # [1, 2, 3, 4]
4.3 functools: Functional Programming Utilities
-
lru_cache: Cache function results to speed up repeated calls (memoization).from functools import lru_cache @lru_cache(maxsize=None) # Unlimited cache def fib(n): if n <= 1: return n return fib(n-1) + fib(n-2) print(fib(100)) # Fast! (No redundant calculations) -
partial: Fix arguments of a function to create a new function.from functools import partial def power(base, exp): return base ** exp square = partial(power, exp=2) # Fix exponent to 2 print(square(5)) # 25
4.4 contextlib: Context Managers Simplified
Create reusable context managers (e.g., for resource handling) with contextmanager.
from contextlib import contextmanager
@contextmanager
def timer():
start = datetime.now()
yield # Code inside `with` block runs here
end = datetime.now()
print(f"Elapsed time: {end - start}")
with timer():
# Code to time (e.g., a slow function)
import time
time.sleep(1) # Elapsed time: ~1 second
Best Practices for Using Built-ins and Libraries
- Prefer Built-ins Over Custom Code: Built-in functions (e.g.,
sum(),sorted()) are optimized in C and faster than manual loops. - Leverage Standard Libraries: Avoid reinventing the wheel (e.g., use
csvinstead of parsing CSV withsplit(',')). - Readability First: Use
pathlibinstead ofos.pathfor cleaner path handling; preferenumerate()over manual index tracking. - Profile Before Optimizing: Use
timeitorcProfileto identify bottlenecks before replacing built-ins with custom code. - Consult Documentation: Use
help(module)or the Python docs to explore lesser-known features.
Conclusion
Python’s built-in functions and standard libraries are a goldmine of efficiency and readability. By mastering these tools, you’ll write code that’s concise, performant, and maintainable. Whether you’re processing data, building APIs, or automating tasks, Python’s “batteries included” philosophy ensures you have the right tool for the job—no extra installation required.
Dive deeper, explore the docs, and experiment with modules like collections or itertools—you’ll be surprised how much they can simplify your workflow!
References
- Python Built-in Functions
- Python Standard Library
- Real Python: Python Standard Library Tutorial
- Fluent Python (Book by Luciano Ramalho)