为什么发电机没有“发电机”?像__send__()
这样的__next__()
方法?
我认为send()
和next()
函数类似。但是,正如您在下面的代码中看到的那样,与这些函数混合的代码在美学上并不对称。
g = some_generator()
next(g)
next(g)
g.send(some_value)
#send(g, some_value) # how about this? Is is weird? I'm wondering the reason.
为什么Python 3不提供__send__()
代替generator.send()
而不是__next__()
?
答案 0 :(得分:1)
提供__next__
和相应的内置next
来调用它是有道理的,因为Python中的许多对象都支持并使用迭代器协议。
使用.send
几乎只适用于我所知道的生成器,将其作为dunder然后创建一个内置的send
函数来访问dunder就是不会值得额外的麻烦。