在 Python 中,typing 模块提供了一种称为 "Type aliase
▥Python
𝄐 0
pythonslots
在 Python 中,typing 模块提供了一种称为 "Type aliases" 的特性,它允许我们为现有的类型创建一个新的名称。这个新的名称被称为 Type Alias 或者 Type typedefs,它可以让我们在代码中更加方便地使用和表达这些类型。
Type Alias 可以用来定义任何符合 PEP 484 标准的类型,例如 Tuple、List、Dict、Union、Callable 等等。下面是一个例子,定义了一个 UserId 类型,它实际上就是一个字符串类型:
python
from typing import TypeAlias
UserId = TypeAlias(str, name='UserId')
这样做的好处是我们在代码中可以使用 UserId 来代替 str,并且这个别名会在类型提示中得到展示:
python
def get_user(user_id: UserId) -> Dict[str, Any]:
# ...
上面的例子中,get_user 函数接受一个 UserId 类型的参数,并返回一个字典类型。在函数定义中使用 UserId 而不是 str 可以使代码更加易读和清晰。
另外一个例子是定义一个 Point 类型,它表示平面上的一个点,包含 x 和 y 两个属性:
python
from typing import TypeAlias
class Point:
def __init__(self, x: float, y: float):
self.x = x
self.y = y
PointType = TypeAlias(Point, name='PointType')
这里我们定义了一个 Point 类,然后通过 TypeAlias 创建了一个别名 PointType,用来表示这个类的类型。这个别名可以在函数签名中使用:
python
from typing import Tuple
def distance(p1: PointType, p2: PointType) -> float:
return ((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2) ** 0.5
p1 = Point(0, 0)
p2 = Point(3, 4)
d = distance(p1, p2) # 5.0
上面的例子中,distance 函数接受两个 PointType 类型的参数,并返回它们之间的欧几里得距离。使用 TypeAlias 别名可以使函数签名变得更加清晰易读。
在 Python 中,typing 模块提供了一种称为 "Type aliases" 的特性,它允许我们为现有的类型创建一个新的名称。这个新的名称被称为 Type Alias 或者 Type typedefs,它可以让我们在代码中更加方便地使用和表达这些类型。
Type Alias 可以用来定义任何符合 PEP 484 标准的类型,例如 Tuple、List、Dict、Union、Callable 等等。下面是一个例子,定义了一个 UserId 类型,它实际上就是一个字符串类型:
python
from typing import TypeAlias
UserId = TypeAlias(str, name='UserId')
这样做的好处是我们在代码中可以使用 UserId 来代替 str,并且这个别名会在类型提示中得到展示:
python
def get_user(user_id: UserId) -> Dict[str, Any]:
# ...
上面的例子中,get_user 函数接受一个 UserId 类型的参数,并返回一个字典类型。在函数定义中使用 UserId 而不是 str 可以使代码更加易读和清晰。
另外一个例子是定义一个 Point 类型,它表示平面上的一个点,包含 x 和 y 两个属性:
python
from typing import TypeAlias
class Point:
def __init__(self, x: float, y: float):
self.x = x
self.y = y
PointType = TypeAlias(Point, name='PointType')
这里我们定义了一个 Point 类,然后通过 TypeAlias 创建了一个别名 PointType,用来表示这个类的类型。这个别名可以在函数签名中使用:
python
from typing import Tuple
def distance(p1: PointType, p2: PointType) -> float:
return ((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2) ** 0.5
p1 = Point(0, 0)
p2 = Point(3, 4)
d = distance(p1, p2) # 5.0
上面的例子中,distance 函数接受两个 PointType 类型的参数,并返回它们之间的欧几里得距离。使用 TypeAlias 别名可以使函数签名变得更加清晰易读。
本文地址:
/show-274090.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。