异步函数类型提示传入asyncio.create_task时PyCharm报错问题咨询
问题解答
首先,Callable[..., Awaitable[Any]]是符合PEP标准的异步可调用对象类型提示方式,你的写法本身没有问题。出现报错更可能是PyCharm类型检查器的局限性——它对这种嵌套泛型的识别有时候会出现偏差,尤其是在旧版本中。
你可以尝试以下几种方式解决:
使用更精确的参数签名:你的代码中调用
ccc()时没有传入参数,所以可以把类型提示改为Callable[[], Awaitable[Any]],明确指定该可调用对象不需要参数。这种更具体的类型定义通常能让PyCharm的类型检查器正确识别。修改后的代码:
import asyncio from typing import Callable, Awaitable, Any def fff(ccc: Callable[[], Awaitable[Any]]): return asyncio.create_task(ccc())升级PyCharm版本:较新的PyCharm版本对类型提示的支持更完善,可能已经修复了这个嵌套泛型的识别问题。
临时忽略类型检查:如果不想修改类型提示,可以在报错行添加注释
# noinspection PyTypeChecker来让PyCharm跳过该行的类型检查,但这只是临时方案,不推荐长期使用。
总结:你的类型提示写法符合标准,报错主要是PyCharm类型检查的问题,通过调整类型提示的精确性或升级IDE版本就能解决。
内容的提问来源于stack exchange,提问作者Shuri2060
相关产品推荐
相关产品推荐

