gpt4 book ai didi

异步函数的 Python 类型提示作为函数参数

转载 作者:行者123 更新时间:2023-11-28 19:03:52 24 4
gpt4 key购买 nike

我正在尝试确保函数参数是异步函数。所以我正在玩以下代码:

async def test(*args, **kwargs):
pass

def consumer(function_: Optional[Coroutine[Any, Any, Any]]=None):
func = function_

consumer(test)

但它不起作用。

我在 pyCharm 中进行类型检查时遇到以下错误:

Expected type 'Optional[Coroutine]', got '(args: Tuple[Any, ...], kwargs: Dict[str, Any]) -> Coroutine[Any, Any, None]' instead

谁能给我一些解决方法的提示?

最佳答案

您正在寻找:

FuncType = Callable[[Any, Any], Awaitable[Any]]
def consumer(function_: FuncType = None):
pass # TODO: do stuff

为什么类型结构是这样的?如果您声明一个函数 async,您实际做的是将它包装在一个具有给定参数的新函数中,该函数返回一个 Coroutine


因为这可能与来到这里的某些人有关,所以这是一个 awaitable 函数类型的示例,其中输入和输出类型:

OnAction = Callable[[Foo, Bar], Awaitable[FooBar]]

这是一个接受FooBar并返回FooBar的函数

关于异步函数的 Python 类型提示作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49360480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com