gpt4 book ai didi

python - 异步的语义等价物

转载 作者:太空狗 更新时间:2023-10-30 01:20:37 24 4
gpt4 key购买 nike

从与 Python 3.5 中的 async for 语法相关的文档中,我了解到引入它是为了迭代可等待的迭代器。

虽然在描述之后的语义等价物中我没有得到一些东西:

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) 行是做什么的?为什么有必要?

最佳答案

python 中的魔术方法,例如__add__总是 looked up on the class .例如,len(foo) 实际上会 调用 解析为type(foo).__len__(foo)。这意味着如果在 foo 上定义了 __len__,它将永远不会使用 foo.__len__

由于 __aiter__ 是一个神奇的方法,因此它总是被查找为 type(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 - 异步的语义等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38102194/

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