什么是Python中的异步?
问题描述:
我读过关于新的Python“关键字”async
和await
。然而,它们既不是真正的关键字,也不是保留在命名空间中什么是Python中的异步?
>>> import keyword
>>> keyword.iskeyword("async")
False
>>> async
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'async' is not defined
在这个例子中我希望为关键字True
和SyntaxError
。
那么,究竟是Python中的async
?怎么运行的?
答
为了向下兼容,async
和await
通过ugly tokenizer hack进行分析。内部的async def
函数定义,或用于直接async
一个def
之前,标记生成器取代NAME
令牌async
和await
与ASYNC
和AWAIT
令牌;在其他上下文中,分词器发出和await
的常规NAME
令牌,将它们视为标识符。
你可以看到,处理它在Parser/tokenizer.c
的代码,你可以找到在PEP 492向后兼容性计划,介绍了async
和await
语法PEP。
'async'只适用于Python 3.5。这是你使用的版本吗? –
'async'和'await'并不是真正的关键字,但它们将在Python 3.7中。 – vaultah
我使用Python 3.6.0 –