Home >Backend Development >Python Tutorial >How to Specify Multiple Return Types in Python with Type Hints?

How to Specify Multiple Return Types in Python with Type Hints?

Barbara Streisand
Barbara StreisandOriginal
2024-11-25 08:22:11918browse

How to Specify Multiple Return Types in Python with Type Hints?

Specifying Multiple Return Types with Type Hints

When working with functions that can return different data types, such as a list or a boolean, it's essential to properly specify the expected return types using type hints. This helps improve code readability and enables type checking.

Using Python 3.10 Syntax

From Python 3.10 onwards, the preferred method for specifying multiple return types is using the pipe (|) operator to create a union type. The syntax is as follows:

def foo(id) -> list | bool:
    # ...

In this example, the foo() function can return either a list or a boolean value.

Using typing.Union for Earlier Python Versions

For Python versions prior to 3.10, you can use the typing.Union class to create a union type:

from typing import Union

def foo(client_id: str) -> Union[list, bool]:
    # ...

Enforcement of Type Hints

It's important to note that type hints are not enforced in Python, meaning that runtime type checking is not performed. They serve primarily as a descriptive tool during code development and documentation.

Example

Consider the following code:

>>> def foo(a: str) -> list:
...     return "Works"
... 

>>> foo(1)
'Works'

In this example, even though the function is annotated to return a list, it returns a string. However, the type annotation is still set in the __annotations__ attribute:

>>> foo.__annotations__ 
{'return': <class 'list'>, 'a': <class 'str'>}

Additional Resources

For more information on type hints, refer to the following resources:

  • PEP 483: Type Hints
  • What are type hints in Python 3.5??

The above is the detailed content of How to Specify Multiple Return Types in Python with Type Hints?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn