自学内容网 自学内容网

Python typing模块类型注解

文章目录

typing模块

Python typing模块中包含了许多不同的类型注释,用于标注函数的参数和返回值的类型。下面是一些常见的类型注释:

  1. int: 表示整数类型
  2. float: 表示浮点数类型
  3. str: 表示字符串类型
  4. bool: 表示布尔类型
  5. List: 表示列表类型
  6. Tuple: 表示元组类型
  7. Set: 表示集合类型
  8. Dict: 表示字典类型
  9. Any: 表示任意类型
  10. Union: 表示多个类型中的一个
  11. Optional: 表示可选类型,即可以为指定类型或者None
  12. Callable: 表示可调用对象类型,如函数
  13. Generator: 表示生成器类型
  14. Iterator: 表示迭代器类型
  15. TypeVar: 表示泛型类型

这只是一些常见的类型注释,实际上Python typing模块提供了更多的类型注释和类型相关的工具。需要注意的是,类型注释只是一种静态类型检查的工具,运行时并不会影响Python的动态类型特性。

示例

typing模块中,OptionalUnion是用于定义函数或方法参数或返回值的类型注解的类型。

  1. Optional:表示一个值可以是指定类型或者None。例如,可以使用Optional[int]表示一个参数可以是整数类型或者None。示例代码如下:
from typing import Optional

def foo(num: Optional[int]) -> Optional[int]:
    if num is None:
        return None
    else:
        return num + 1
  1. Union:表示一个值可以是多个指定类型中的任意一个。例如,可以使用Union[int, float]表示一个参数可以是整数类型或者浮点数类型。示例代码如下:
from typing import Union

def bar(num: Union[int, float]) -> Union[int, float]:
    return num + 1

在上面的示例中,函数bar可以接受一个整数或者浮点数作为参数,并返回参数加1后的结果,返回值的类型也可以是整数或者浮点数。

这些类型注解可以帮助开发者在静态分析工具中进行类型检查,提高代码的可读性和可维护性。

  1. Callable:用于标注可调用对象的类型。例子:
from typing import Callable

def add(a: int, b: int) -> int:
    return a + b

func: Callable[[int, int], int] = add
  1. Generator:用于标注生成器函数的类型。例子:
from typing import Generator

def fibonacci(n: int) -> Generator[int, None, None]:
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

fib: Generator[int, None, None] = fibonacci(10)
  1. Iterator:用于标注迭代器对象的类型。例子:
from typing import Iterator

class MyRange:
    def __init__(self, start: int, stop: int):
        self.start = start
        self.stop = stop

    def __iter__(self) -> Iterator[int]:
        return self

    def __next__(self) -> int:
        if self.start >= self.stop:
            raise StopIteration
        num = self.start
        self.start += 1
        return num

my_range: Iterator[int] = MyRange(1, 5)
  1. TypeVar:用于标注泛型类型的占位符。例子:
from typing import TypeVar

T = TypeVar('T')

def identity(x: T) -> T:
    return x

result: int = identity(10)

上述例子中,我们使用了Callable来标注一个函数类型,Generator来标注生成器函数类型,Iterator来标注迭代器对象类型,以及TypeVar来标注泛型类型占位符。这些工具可以帮助我们在编码过程中提供类型提示和静态类型检查。


原文地址:https://blog.csdn.net/weixin_46530492/article/details/143017723

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!