Python 如何为具有特定关键字参数的函数添加类型提示?

Python 如何为具有特定关键字参数的函数添加类型提示?,python,type-hinting,typing,mypy,Python,Type Hinting,Typing,Mypy,我想向其输入(也是一个函数)具有特定关键字参数的高阶函数添加类型提示 我的代码与此类似: def foo(a: int, b: int) -> int: ... def bar(c: Callable[[int, int], int]) -> int: return c(a=1, b=2) # getting a mypy error: Unexpected keyword argument "a" 在本例中,我希望能够从bar的函数范围调

我想向其输入(也是一个函数)具有特定关键字参数的高阶函数添加类型提示

我的代码与此类似:

def foo(a: int, b: int) -> int:
    ...


def bar(c: Callable[[int, int], int]) -> int:
    return c(a=1, b=2)  # getting a mypy error: Unexpected keyword argument "a"
在本例中,我希望能够从
bar
的函数范围调用
c
,并假设它具有关键字参数
a
b

我可以理解为什么mypy会在这里抱怨,因为其他一些具有不同签名的函数可以作为参数传递给
b
,然后
c(a=1,b=2)
将不再工作。但是,似乎应该有一种方法在类型提示中添加关键字参数名称,以明确保证函数
c
接受名为
a
b
的参数,这是扩展
可调用的

from typing import Callable
from mypy_extensions import (Arg, DefaultArg, NamedArg,
                             DefaultNamedArg, VarArg, KwArg)
                             
def foo(a: int, b: int) -> int:
    ...


def bar(c: Callable[[Arg(int, 'a'), Arg(int , 'b')], int]) -> int:
    return c(b=1, a=2)  # no issues