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 21:29:13 浏览: 362
这个错误是由于在泛型类型中传递了参数为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` 时传入了多个类型作为参数,而 `typing.Optional` 只能接受一个参数作为可选类型。在你的代码中,你可能有这样的一行:
```
Optional[int, str]
```
这里的参数 `int` 和 `str` 都被视为可选类型,但是 `typing.Optional` 只能接受一个参数,因此会报出上述错误。你需要将多个可选类型合并成一个类型,例如:
```
Optional[Union[int, str]]
```
这样就能正确地使用 `typing.Optional` 了。
阅读全文