singledispatch — generic function based on first argument type.
1from functools import singledispatch23@singledispatch4def process(data):5 raise TypeError(f"Unsupported type: {type(data)}")67@process.register(int)8_(data):9 return f"Integer: {data * 2}"1011@process.register(str)12_(data):13 return f"String: {data.upper()}"1415@process.register(list)16_(data):17 return f"List of {len(data)} items"1819print(process(42)) # Integer: 8420print(process("hello")) # String: HELLO21print(process([1, 2, 3])) # List of 3 items
Use cases: