Python 3.6 及以上版本引入了类型注解的新特性,这为 Python 这种动态类型语言带来了一些新的功能和优势。以下是关于 Python 3.6+ 类型注解的详细介绍:
-
函数参数和返回值类型注解:可以在函数定义时使用
:type
的形式指定参数类型,使用-> type
的形式指定返回值类型。例如:def add(x: int, y: int) -> int: return x + y
这些类型注解不会影响代码的运行,但可以帮助 IDE 提供更好的代码提示和检查。
-
变量类型注解:从 Python 3.6 开始,可以在变量定义时使用
: type
的形式指定变量类型。例如:a: int = 123 b: str = 'hello'
-
容器类型注解:可以使用
typing
模块中的类型来注解容器类型,如列表、字典等。例如:from typing import List l: List[int] = [[1]](https://docs.python.org/zh-cn/3.6/library/typing.html)[[2]](https://docs.python.org/zh-cn/3.10/library/typing.html)[[3]](https://cloud.tencent.com/developer/article/1163872)
-
类型别名:可以使用
typing.TypeAlias
定义类型别名,以简化复杂的类型注解。例如:from typing import Dict, Tuple, List ConnectionOptions = Dict[str, str] Address = Tuple[str, int] Server = Tuple[Address, ConnectionOptions]
-
自定义泛型类型:可以使用
typing.Generic
和typing.TypeVar
定义自己的泛型类型。例如:from typing import TypeVar, Generic from logging import Logger T = TypeVar('T') class LoggedVar(Generic[T]): def __init__(self, value: T, name: str, logger: Logger) -> None: self.name = name self.logger = logger self.value = value
需要注意的是,这些类型注解仅供静态类型检查工具(如 mypy)使用,Python 解释器本身并不会对它们进行检查和强制。但使用类型注解可以提高代码的可读性和可维护性,并帮助 IDE 提供更好的代码提示和检查。
Learn more:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于