python– 异步的语义等价于

python– 异步的语义等价于,第1张

概述从Python 3.5中相对于async语法的文档中,我收集到它是为了迭代一个等待的迭代器而引入的.尽管如此,我仍然没有按照描述的语义等价物获得:iter = (ITER) iter = type(iter).__aiter__(iter) running = True while running: try: TARGET = awa

从Python 3.5中相对于async语法的文档中,我收集到它是为了迭代一个等待的迭代器而引入的.

尽管如此,我仍然没有按照描述的语义等价物获得:

iter = (ITER)iter = type(iter).__aiter__(iter)running = Truewhile running:    try:        TARGET = await type(iter).__anext__(iter)    except StopAsyncIteration:        running = False    else:       BLOCKelse:    BLOCK2 

什么是iter = type(iter).__ aiter __(iter)在做什么?为什么有必要?最佳答案python中的魔术方法,例如__add __,总是looked up on the class.例如,len(foo)实际上会调用resolve来键入(foo).__ len __(foo).这意味着如果在foo上定义了__len__,它将永远不会使用foo .__ len__. [1]

由于__aiter__是一种神奇的方法,因此它总是被查找为类型(foo).__ aiter __(foo).

查找示例:

class Thingy(object):  def __len__(self):    return 10lengthy_thingy = Thingy()lengthy_thingy.__len__ = lambda self: 20print(len(lengthy_thingy))  # gives `10`print(lengthy_thingy.__len__(lengthy_thingy))  # gives `20` insteadprint(type(lengthy_thingy).__len__(lengthy_thingy))  # gives `10` as for using `len`
总结

以上是内存溢出为你收集整理的python – 异步的语义等价于全部内容,希望文章能够帮你解决python – 异步的语义等价于所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存