相关疑难解决方法(0)

类型提示:给原始数据类型添加别名是一种不好的做法吗?

在 Python 的输入和类型提示文档中,我们有以下示例

Vector = List[float]

def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]
Run Code Online (Sandbox Code Playgroud)

Vector 类型别名清楚地表明类型别名对于简化复杂的类型签名很有用。

然而,给原始数据类型别名又如何呢?

让我们对比两个函数签名的基本示例:

URL = str    

def process_url(url: URL) -> URL:
    pass
Run Code Online (Sandbox Code Playgroud)

对比

def process_url(url: str) -> str:
    pass
Run Code Online (Sandbox Code Playgroud)

URL原始类型具有类型别名的版本str是:

  • 自我记录(除其他外,现在我可以跳过记录返回值,因为它显然应该是一个 url),
  • 抵抗类型实现更改(我可以在不更改函数签名的情况下切换 URLDictnamedtuple稍后)。

问题是我找不到其他人遵循这种做法。我只是担心我无意中滥用类型提示来实现我自己的想法,而不是遵循它们的预期目的。


2020-10 年注意事项

Python 3.9 引入了“灵活的函数和变量注释”,它允许进行如下注释:

Vector = List[float]

def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]
Run Code Online (Sandbox Code Playgroud)

这使得用于文档目的的别名数据类型相当多余! …

python types type-hinting

13
推荐指数
2
解决办法
1787
查看次数

标签 统计

python ×1

type-hinting ×1

types ×1