TypeError: Parameters to generic types must be types. Got 0. raise TypeError(f"{msg} Got {arg!r:.100}.") Line 176 in _type_check (/usr/lib/python3.10/typing.py) params = tuple(_type_check(p, msg) for p in params) Line 1143 in <genexpr> (/usr/lib/python3.10/typing.py) params = tuple(_type_check(p, msg) for p in params) Line 1143 in __getitem__ (/usr/lib/python3.10/typing.py) return func(*args, **kwds) Line 312 in inner (/usr/lib/python3.10/typing.py) for i in List: Line 3 in twoSum (Solution.py) ret = Solution().twoSum(param_1, param_2) Line 32 in _driver (Solution.py) _driver() Line 43 in <module> (Solution.py)
时间: 2024-04-09 13:29:13 浏览: 308
这个错误是由于在泛型类型中传递了参数为0的值引起的。泛型类型的参数必须是类型,而不是具体的值。
在你的代码中,可能存在一个类似以下的问题:
```python
List[0] # 错误的示例,泛型参数不能是具体的值
```
正确的做法是使用类型作为参数,例如:
```python
List[int] # 正确的示例,泛型参数是类型 int
```
请检查你的代码,确保在泛型类型中使用的参数是类型而不是具体的值。
相关问题
TypeError: Callable[[arg, ...], result]: each arg must be a type. Got Ellipsis.
这个TypeError通常是当你在Python中尝试使用Callable装饰器(用于检查函数是否可调用)时遇到的。`Callable[[arg, ...], result]`是一个类型提示,表示接受任意数量位置参数(arg)并返回结果(result)的函数。然而,当出现`Got Ellipsis`(...)时,说明你在传入Callable装饰器的参数列表中使用了Ellipsis(...),这在类型提示中通常代表“剩余的任意数量参数”。
Ellipsis应该仅在你需要捕获不确定数量的位置参数时才使用,并且需要跟明确指定的参数类型一起提供。如果你想要声明一个可以接受任意数量参数的函数,你应该像下面这样:
```python
from typing import Callable
def accepts_varargs(func: Callable[..., Any]) -> None:
# 函数装饰器,func现在期望接收任意数量的位置参数
pass
@accepts_varargs
def my_function(*args):
# 这里 args 就是任意数量的位置参数
pass
```
在这个例子中,`Callable[..., Any]`意味着`func`可以接受任意数量的参数,并且参数类型可以是任何类型。
raise TypeError(f"{msg} Got {arg!r:.100}.") TypeError: typing.Optional requires a single type. Got torch.int64.
这个错误是因为在使用typing.Optional时只能传入一个类型,但是你传入了torch.int64这个值,所以会报错。你需要将torch.int64改为对应的类型,或者使用typing.Union来传入多个类型。例如:
```python
from typing import Optional, Union
import torch
def foo(x: Optional[Union[int, float]] = None):
print(x)
foo()
foo(1)
foo(1.0)
foo(torch.tensor(1)) # 这里会报错,因为torch.tensor不是int或float类型
```
阅读全文