python type hints multiple types

Natalie 179 Published: 08/22/2024

python type hints multiple types

I'd be happy to help!

Type hints in Python are a way to specify the expected data type of a variable, function parameter, or return value. This feature was introduced in Python 3.5 and is designed to make your code more readable, maintainable, and self-documenting.

To define multiple types for a single variable or function parameter using type hints, you can use unions (also known as type unions). A type union is defined by placing the types within parentheses, separated by vertical bars (|).

For example:

def greet(name: str | int) -> None:

print(f"Hello, {name}!")

In this example, the greet function takes a single argument called name, which can be either a string or an integer. The function itself returns no value (-> None). You can call the function with either a string or an integer:

greet("Alice")  # prints "Hello, Alice!"

greet(123) # prints "Hello, 123!"

By using type unions, you're explicitly indicating that name can be one of several types. This helps others (and yourself!) understand the expected behavior and usage of your code.

When working with multiple inheritance or complex data structures, type hints can help clarify the relationships between different classes or objects. For instance:

class Point(str | tuple):

def init(self, x: int, y: int) -> None:

super().init(f"({x}, {y})")

Here, Point is a class that can be either a string representation (e.g., "(1, 2)") or a tuple of two integers (1, 2). The __init__ method initializes the object and allows for flexible creation of points.

In summary:

Use type hints to specify the expected data types in your Python code. Define multiple types for a single variable or function parameter using type unions (separated by vertical bars |). Type hints improve code readability, maintainability, and self-documentation. They help clarify relationships between classes or objects when working with complex data structures.

I hope this explanation helps! If you have more questions or examples, feel free to ask.

Python type hints examples

I'm happy to help! Here are some examples of using type hints in Python:

Example 1: Basic Type Hints

def greet(name: str) -> None:

print(f"Hello, {name}!")

greet("John") # Output: Hello, John!

In this example, we're defining a function greet that takes a str parameter and returns None. We use type hints to specify the type of name as str.

Example 2: Union Type Hints

def process_input(input_data: int | str) -> None:

if isinstance(input_data, int):

print(f"Received integer {input_data}")

elif isinstance(input_data, str):

print(f"Received string {input_data}")

process_input(5) # Output: Received integer 5

process_input("hello") # Output: Received string hello

In this example, we're defining a function process_input that takes an input of either type int or str. We use the | operator to specify the union of these two types.

Example 3: Type Hints for Functions with Multiple Parameters

def process_data(x: int, y: str) -> None:

print(f"Received data x={x}, y='{y}'")

process_data(5, "hello") # Output: Received data x=5, y='hello'

In this example, we're defining a function process_data that takes two parameters, x of type int and y of type str. We use type hints to specify the types of these parameters.

Example 4: Type Hints for Returning Multiple Values

def process_data() -> (int, str):

return 5, "hello"

result = process_data()

print(result) # Output: (5, 'hello')

In this example, we're defining a function process_data that returns two values of type int and str. We use type hints to specify the types of these returned values.

Example 5: Type Hints for Classes

class Person:

def init(self, name: str, age: int) -> None:

self.name = name

self.age = age

john = Person("John", 30)

print(john.name) # Output: John

print(john.age) # Output: 30

In this example, we're defining a class Person with two attributes, name of type str and age of type int. We use type hints to specify the types of these attributes.

These are just a few examples of using type hints in Python. I hope they help illustrate how type hints can improve code readability and maintainability!