|
发表于 2023-4-22 15:26:50
|
显示全部楼层
[b]你遇到的问题是在Python 3.9之前的版本中,`tuple`作为一个内置的类型对象是不可下标的。因此,你应该使用`typing`模块中的`Tuple`类型进行类型注解。下面是根据你的代码修复后的版本:
- from typing import Tuple
- def f(a: Tuple[int, int]) -> int:
- return a[0] + a[1]
复制代码
这样就可以避免错误,并在Python 3.5及以上版本中使用类型注解。然而,如果你正在使用Python 3.9或更高版本,你可以直接使用内置的`tuple`类型,如下所示:
- def f(a: tuple[int, int]) -> int:
- return a[0] + a[1]
复制代码
请确保你正在使用支持此语法的Python版本。
你也可以使用 `__future__` 模块来实现在早期 Python 版本(如 Python 3.7)中使用新特性的目标。例如,在 Python 3.7 中,你可以使用 `annotations` 功能来启用更高版本中的类型注解功能。下面是使用 `__future__` 在 Python 3.7 中启用新的类型注解功能的示例:
- from __future__ import annotations
- def f(a: tuple[int, int]) -> int:
- return a[0] + a[1]
复制代码
需要注意的是,`__future__` 模块提供的功能取决于你的 Python 版本,因此,并非所有新特性都可以通过它实现。对于你的情况,`annotations` 功能可以帮助你在早期版本的 Python 中使用类型注解,但如果你想在更早的 Python 版本(如 3.5 或 3.6)中使用原生的 `tuple` 类型,`__future__` 是无法提供支持的。在这种情况下,你仍然需要使用 `typing` 模块中的 `Tuple` 类型。[/b] |
|