歌者文明清理员 发表于 2023-4-22 15:26:46

liuhongrun2022 发表于 2023-4-22 15:23
试试这个呢?

isdkz 发表于 2023-4-22 15:26:50

你遇到的问题是在Python 3.9之前的版本中,`tuple`作为一个内置的类型对象是不可下标的。因此,你应该使用`typing`模块中的`Tuple`类型进行类型注解。下面是根据你的代码修复后的版本:

from typing import Tuple

def f(a: Tuple) -> int:
    return a + a


这样就可以避免错误,并在Python 3.5及以上版本中使用类型注解。然而,如果你正在使用Python 3.9或更高版本,你可以直接使用内置的`tuple`类型,如下所示:

def f(a: tuple) -> int:
    return a + a


请确保你正在使用支持此语法的Python版本。


你也可以使用 `__future__` 模块来实现在早期 Python 版本(如 Python 3.7)中使用新特性的目标。例如,在 Python 3.7 中,你可以使用 `annotations` 功能来启用更高版本中的类型注解功能。下面是使用 `__future__` 在 Python 3.7 中启用新的类型注解功能的示例:

from __future__ import annotations

def f(a: tuple) -> int:
    return a + a


需要注意的是,`__future__` 模块提供的功能取决于你的 Python 版本,因此,并非所有新特性都可以通过它实现。对于你的情况,`annotations` 功能可以帮助你在早期版本的 Python 中使用类型注解,但如果你想在更早的 Python 版本(如 3.5 或 3.6)中使用原生的 `tuple` 类型,`__future__` 是无法提供支持的。在这种情况下,你仍然需要使用 `typing` 模块中的 `Tuple` 类型。

歌者文明清理员 发表于 2023-4-22 15:27:10

isdkz 发表于 2023-4-22 15:26
你遇到的问题是在Python 3.9之前的版本中,`tuple`作为一个内置的类型对象是不可下标的。因此,你应该使用` ...

你晚了{:10_256:}

liuhongrun2022 发表于 2023-4-22 15:27:41

isdkz 发表于 2023-4-22 15:26
你遇到的问题是在Python 3.9之前的版本中,`tuple`作为一个内置的类型对象是不可下标的。因此,你应该使用` ...

你晚了{:10_256:}

isdkz 发表于 2023-4-22 15:28:20

歌者文明清理员 发表于 2023-4-22 15:27
你晚了

明明是我的答案更好{:10_277:}

歌者文明清理员 发表于 2023-4-22 15:29:07

isdkz 发表于 2023-4-22 15:28
明明是我的答案更好

我已经自己解决了

sfqxx 发表于 2023-4-22 15:32:33

歌者文明清理员 发表于 2023-4-22 15:25
啊可以
现在已经找到了问题,annotions拼错了,看图:

emmnnnnn
页: 1 [2]
查看完整版本: TypeError: 'type' object is not subscriptable