TypeError: 'type' object is not subscriptable
代码:def f(a: tuple) -> int:
return a+a 本帖最后由 sfqxx 于 2023-4-22 14:58 编辑
错误信息“TypeError:'type' object is not subscriptable”表示您尝试在类型对象上使用下标符号(即方括号[]),这是不允许的,因为类型是不可变的,并且没有可以使用索引访问的元素。
在给定的代码中,没有语法错误,但由于输入参数或函数调用,似乎可能会引发此TypeError。
为了解决此错误,请确保将整数元组作为参数传递给“f()”函数。您可以使用内置的“type()”函数在将其传递到函数之前检查参数的数据类型来验证这一点。
例如:
# correct usage
arg = (2, 3)
print(f(arg))# output: 5
# incorrect usage
arg = # not a tuple!
print(f(arg))# raises TypeError
有用请设置最佳答案 sfqxx 发表于 2023-4-22 14:56
错误信息“TypeError:'type' object is not subscriptable”表示您尝试在类型对象上使用下标符号(即方括 ...
我都没调用函数,他就报错,就是定义完就报错 有什么问题 liuhongrun2022 发表于 2023-4-22 15:09
有什么问题
标题 本帖最后由 liuhongrun2022 于 2023-4-22 15:14 编辑
歌者文明清理员 发表于 2023-4-22 15:09
标题
能用啊
>>> def f(a: tuple) -> int:
return a+a
>>> f((1,2))
3 liuhongrun2022 发表于 2023-4-22 15:11
能用啊
怎么会? 歌者文明清理员 发表于 2023-4-22 15:09
我都没调用函数,他就报错,就是定义完就报错
截个图好吗? sfqxx 发表于 2023-4-22 15:14
截个图好吗?
人工判断已启动,请看7楼 歌者文明清理员 发表于 2023-4-22 15:14
怎么会?
GPT:(不一定对)
您提供的代码中,使用了类型注解 tuple 来表示参数类型为包含两个整数的元组,返回值类型为整数。在 Python 3.7 中,不支持 tuple 等泛型类型注解,因此会报错。 是不是用了中文符号 liuhongrun2022 发表于 2023-4-22 15:16
GPT:(不一定对)
得py3.8????哎,我不想再改python版本了,py3.12>py3.11>py3.10>py39>py38>py37每个版本都蹭过,这就是我之前在py399的代码,现在简化函数还是报错
解决方案?(我问过我的chatgpt了,和sfqxx的一样) sfqxx 发表于 2023-4-22 15:18
是不是用了中文符号
歌者文明清理员 发表于 2023-4-22 15:19
得py3.8????哎,我不想再改python版本了,py3.12>py3.11>py3.10>py39>py38>py37每个版本都蹭过,这就 ...
我的py3.10能用
def f(a:tuple) -> int:
return a+a 空格去掉试试
还是看我们人类吧 liuhongrun2022 发表于 2023-4-22 15:20
我的py3.10能用
解决方案?我记得好像是注解(annotions),但是
Python 3.7.8rc1 (tags/v3.7.8rc1:5f3933d61d, Jun 17 2020, 16:59:29) on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> from __future__ import annotions
SyntaxError: future feature annotions is not defined 歌者文明清理员 发表于 2023-4-22 15:20
试试这个呢?
from typing import Tuple
def f(a: Tuple) -> int:
return a+a
print(f((1,2))) sfqxx 发表于 2023-4-22 15:21
空格去掉试试
还是看我们人类吧
liu说了,是版本问题 liuhongrun2022 发表于 2023-4-22 15:23
试试这个呢?
啊可以
现在已经找到了问题,annotions拼错了,看图:
页:
[1]
2