dict[[int], int] 和 dict[int, int] 有什么区别?

What is the difference between dict[[int], int] and dict[int, int]?

我有以下代码:

from typing import *

Args = ParamSpec('Args')
ReturnType = TypeVar('ReturnType')
TestSet = Dict[Args, ReturnType]
ComplexTestSet = Dict[Args, Tuple[bool, Exception | None, ReturnType | None]]

# Some stuff

def test_func_simple(func: Callable[[Args], ReturnType], test_cases: TestSet) -> ComplexTestSet:
    pass # Some stuff

# Some stuff

if __name__ == "__main__":
    print(test_func_simple(f, {
        1: 1,
        2: 4,
        3: 9
    }))

代码运行良好并产生正确的输出,但 PyCharm 突出显示黄色测试用例字典并显示消息“预期类型 'dict[[int], int]'(匹配的泛型类型 'dict[ParamSpec("Args"), ReturnType]') ,取而代之的是 'dict[int, int]'”。我似乎无法弄清楚为什么它期望 dict[[int], int] 而不是 dict[int, int] 甚至 dict[[int], int] 实际匹配的内容。它似乎没有出现在文档中,我尝试过的也没有匹配它。有人能解释一下为什么要使用 dict[[int], int] 吗?这到底是什么意思?

正如 user2357112 所指出的支持 Monica,这是由于 ParamSpec 的使用不正确。正确的代码是用 TypeVar 替换 ParamSpec。