Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python3.7中注释异步函数的装饰器类型?_Python_Python 3.x_Python Asyncio_Mypy - Fatal编程技术网

如何在Python3.7中注释异步函数的装饰器类型?

如何在Python3.7中注释异步函数的装饰器类型?,python,python-3.x,python-asyncio,mypy,Python,Python 3.x,Python Asyncio,Mypy,我想为异步函数编写一个decorator。如何注释装饰器定义的类型 下面是我想做的一个例子: 输入import TypeVar#是否需要帮助? AsyncFn=TypeVar('AsyncFn')#如何将此类型定义缩小到异步函数? def my_decorator(to_decoration:AsyncFn)->AsyncFn: 异步def修饰(*args,**kwargs):#mypy一直说“函数缺少类型” 返回等待装饰(*args,**kwargs) @我的装饰师 异步def foo(bar

我想为异步函数编写一个decorator。如何注释装饰器定义的类型

下面是我想做的一个例子:

输入import TypeVar#是否需要帮助?
AsyncFn=TypeVar('AsyncFn')#如何将此类型定义缩小到异步函数?
def my_decorator(to_decoration:AsyncFn)->AsyncFn:
异步def修饰(*args,**kwargs):#mypy一直说“函数缺少类型”
返回等待装饰(*args,**kwargs)
@我的装饰师
异步def foo(bar:int)->str:
返回f“async:{bar}”
@我的装饰师
异步def-qux(垃圾邮件:str,**鸡蛋:str)->无:
返回
foo(1)#应该检查
福(“巴兹”)#麦皮应该大喊大叫
quux(“垃圾邮件”)#应检查
quux(1)#mypy应该投诉
好的
quux(垃圾邮件=1,鸡蛋=0)#mypy应该会大发雷霆

我从未尝试过,但我认为这是合适的。似乎是对的;当我
discover\u type(my\u async\u fn)
时,我会得到类似于
def(bar:builtins.str)->键入.Coroutine[Any,Any,builtins.int]
的内容。仔细阅读表明内部函数可以被键入任何类型,只要它被转换为输入函数的类型。我从未尝试过,但我相信这是合适的。似乎正确;当我
discover\u type(my\u async\u fn)
时,我会得到类似于
def(bar:builtins.str)->键入.Coroutine[Any,Any,builtins.int]
的内容。如果仔细阅读,则表明内部函数可以被键入任何类型,只要它被转换为输入函数的类型。