python typing signature (typing.Callable) for function with kwargs 使用kwargs的函数的python类型签名(typing.Callable)

9 浏览
0 Comments

python typing signature (typing.Callable) for function with kwargs 使用kwargs的函数的python类型签名(typing.Callable)

我在Python 3中大量使用Python类型支持。

最近,我尝试将函数作为参数传递,但在typing.Callable的签名中找不到使用kwargs的任何帮助。

请查看下面的代码和注释。

import typing
# 一个带有类型签名的函数
def fn1_as_arg_with_kwargs(a: int, b: float) -> float:
    return a + b
# 一个带有类型签名的函数
def fn2_as_arg_with_kwargs(a: int, b: float) -> float:
    return a * b
# 接受可调用对象作为参数的函数
# 这在typing中可以工作
def function_executor(
        a: int, 
        b: float, 
        fn: typing.Callable[[int, float], float]):
    return fn(a, b)
# 但是如果我想给我的kwargs命名
# (类似下面的代码,但不起作用)
# ... 这将帮助我处理更复杂的情况
# ... 或者我对Python 3期望过高了;)
def function_executor(
        a: int, 
        b: float, 
        fn: typing.Callable[["a": int, "b": float], float]):
    return fn(a=a, b=b)

0