• 周三. 10 月 16th, 2024

Python 类型注解详细用法

城主

12 月 27, 2022 ,

在 Python 3.5 中引入了类型注解,这是一种为函数、方法、变量等提供类型信息的语法,以便于工具和编译器进行类型检查。类型注解不影响代码的运行,它们仅用于提供额外的类型信息。

类型注解使用 “:” 后面跟着类型表达式来表示。例如,下面是一个使用类型注解的函数:





def greet(name: str) -> str:
    return "Hello, " + name

在这个函数中,类型注解表明了 name 参数是一个字符串,并且函数会返回一个字符串。

类型注解可以使用内置的类型或者自定义的类型,也可以使用泛型类型。例如,下面是一个使用自定义类型和泛型类型的类型注解的例子:





from typing import List, Tuple

def sort_points(points: List[Tuple[int, int]]) -> List[Tuple[int, int]]:
    sorted_points = sorted(points, key=lambda x: (x[0], x[1]))
    return sorted_points

在这个函数中,points 参数是一个元组的列表,每个元组包含两个整数。函数会返回一个按照第一个元素排序,然后按照第二个元素排序的元组的列表。

类型注解可以帮助开发人员提供类型信息,并且可以被工具和编译器用来进行类型检查。这有助于提高代码的可读性和可维护性,并且可以在开发过程中发现类型错误。

类型注解的语法很简单,主要是在变量名后面使用 “:” 和类型表达式来表示。例如:





x: int = 10
y: float = 3.14
z: str = "hello"

还可以在函数和方法的参数和返回值上使用类型注解。例如:





def greet(name: str) -> str:
    return "Hello, " + name

def add(x: int, y: int) -> int:
    return x + y

在上面的例子中,类型注解表明了 name 参数是字符串,greet 函数会返回字符串;xy 参数是整数,add 函数会返回整数。

类型注解还可以使用自定义的类型和泛型类型。例如:





from typing import List, Tuple

def sort_points(points: List[Tuple[int, int]]) -> List[Tuple[int, int]]:
    sorted_points = sorted(points, key=lambda x: (x[0], x[1]))
    return sorted_points

类型注解还可以使用泛型类型变量来表示可以接受多种类型的参数或返回值。例如:





from typing import List, TypeVar

T = TypeVar("T")

def reverse(lst: List[T]) -> List[T]:
    return lst[::-1]

在这个例子中,泛型类型变量 T 表示可以接受任意类型的列表,函数会返回输入列表的反转。

阅读  python 代码性能分析与优化方法

另外,类型注解还可以使用 Union 类型来表示可以接受多种类型的参数或返回值。例如:





from typing import Union

def divide(x: int, y: int) -> Union[int, float]:
    return x / y

在这个例子中,divide 函数可以接受两个整数参数,并且会返回一个整数或浮点数。

在使用类型注解时,还有一些注意事项需要考虑。

首先,类型注解仅用于提供额外的类型信息,不会对代码的运行产生任何影响。因此,如果类型注解与代码的实际类型不匹配,不会导致错误或异常。

其次,类型注解可以用于变量、函数、方法、类和模块等的定义中。例如:





x: int = 10

def greet(name: str) -> str:
    return "Hello, " + name

class Point:
    x: float
    y: float

同时,类型注解也可以用于变量、函数、方法、类和模块的注释中。例如:





def greet(name: str) -> str:
    """Returns a greeting for the given name.

    Args:
        name (str): The name of the person to greet.

    Returns:
        str: The greeting.
    """
    return "Hello, " + name

在这个例子中,类型注解用于描述函数的参数和返回值的类型。

最后,类型注解可以使用内置的类型、自定义的类型和泛型类型来表示类型。例如:





from typing import List, Tuple, Union

def sort_points(points: List[Tuple[int, int]]) -> List[Tuple[int, int]]:
    sorted_points = sorted(points, key=lambda x: (x[0], x[1]))
    return sorted_points

def divide(x: int, y: int) -> Union[int, float]:
    return x / y

T = TypeVar("T")

def reverse(lst: List[T]) -> List[T]:
    return lst[::-1]

总的来说,类型注解是一种很有用的工具,可以帮助开发人员提供类型信息,并且可以被工具和编译器用来进行类型检查。它可以帮助提高代码的可读性和可维护性,并且可以在开发过程中发现类型错误。

阅读  Python 项目开发中考虑因素