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