概述
从Python 3.5中相对于async语法的文档中,我收集到它是为了迭代一个等待的迭代器而引入的.
尽管如此,我仍然没有按照描述的语义等价物获得:
iter = (ITER)
iter = type(iter).__aiter__(iter)
running = True
while running:
try:
TARGET = await type(iter).__anext__(iter)
except StopAsyncIteration:
running = False
else:
BLOCK
else:
BLOCK2
什么是iter = type(iter).__ aiter __(iter)在做什么?为什么有必要?
由于__aiter__是一种神奇的方法,因此它总是被查找为类型(foo).__ aiter __(foo).
查找示例:
class Thingy(object):
def __len__(self):
return 10
lengthy_thingy = Thingy()
lengthy_thingy.__len__ = lambda self: 20
print(len(lengthy_thingy)) # gives `10`
print(lengthy_thingy.__len__(lengthy_thingy)) # gives `20` instead
print(type(lengthy_thingy).__len__(lengthy_thingy)) # gives `10` as for using `len`
总结
以上是编程之家为你收集整理的python – 异步的语义等价于全部内容,希望文章能够帮你解决python – 异步的语义等价于所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧