Cha*_*e A 6 python typing type-hinting 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"
Run Code Online (Sandbox Code Playgroud)
在示例中,我希望能够c从 的函数作用域进行调用bar,并且我希望能够假设它具有关键字参数a和b。
我可以理解为什么 mypy 会在这里抱怨,因为具有不同签名的其他函数可以作为参数传入b,然后c(a=1, b=2)将不再起作用。但似乎应该有一种方法可以在类型提示中添加关键字参数名称,以明确保证函数接受带有名称和 的c参数。ab
有mypy 扩展用于扩展Callable
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2886 次 |
| 最近记录: |