Python 生成器是否简单地使用_iter____和next函数生成新对象?

Python 生成器是否简单地使用_iter____和next函数生成新对象?,python,Python,我试图自己寻找这个答案,但声音太大了 python中的生成器是否只是用户创建迭代器对象的方便包装器 定义生成器时: def test(): x = 0 while True: x += 1 yield x python只是创建一个新对象,添加_iter__)方法,然后将其余代码放入下一个函数中吗 class Test(object): def __init__(self): self.x = 0 def __iter__(self): ret

我试图自己寻找这个答案,但声音太大了

python中的生成器是否只是用户创建迭代器对象的方便包装器

定义生成器时:

def test():
  x = 0
  while True:
    x += 1
    yield x
python只是创建一个新对象,添加_iter__)方法,然后将其余代码放入下一个函数中吗

class Test(object):

  def __init__(self):
    self.x = 0

  def __iter__(self):
    return self

  def next(self):
    self.x += 1
    return self.x

No-Generator还提供其他方法.send、.throw等,可以用于比简单地生成迭代器(例如协同路由)更多的目的

事实上,生成器是一种完全不同的野兽,也是一种核心语言特性。如果不是将它们烘焙到语言中,那么很难用普通python创建一个


话虽如此,生成器的一个应用是为创建迭代器提供一个简单的语法:-.

否-生成器还提供其他方法.send、.throw等,并且可以用于比简单地生成迭代器(例如协同路由)更多的用途

事实上,生成器是一种完全不同的野兽,也是一种核心语言特性。如果不是将它们烘焙到语言中,那么很难用普通python创建一个

话虽如此,生成器的一个应用是为创建迭代器提供一个简单的语法:-

python中的生成器是否只是用户创建迭代器对象的方便包装器

不,生成器是一个函数,其中as迭代器是类。因此,生成器不能是迭代器的对象。但在某种程度上,您可以说生成器是获得类似迭代器功能的简化方法。这意味着:

所有生成器都是迭代器,但并非所有迭代器都是生成器

我强烈建议您参考以下wiki链接:

-一次遍历一个集合 -一次生成一个序列,一个项目 迭代器通常具有下一个方法来从流中获取下一个元素。生成器是绑定到函数的迭代器

我建议您参考:

python中的生成器是否只是用户创建迭代器对象的方便包装器

不,生成器是一个函数,其中as迭代器是类。因此,生成器不能是迭代器的对象。但在某种程度上,您可以说生成器是获得类似迭代器功能的简化方法。这意味着:

所有生成器都是迭代器,但并非所有迭代器都是生成器

我强烈建议您参考以下wiki链接:

-一次遍历一个集合 -一次生成一个序列,一个项目 迭代器通常具有下一个方法来从流中获取下一个元素。生成器是绑定到函数的迭代器

我建议你参考:。

不。像这样:

>>> def test():
...    x = 0
...    while True:
...       x += 1
...       yield x
...
>>> type(test)
<type 'function'>
按照你的想法去做,恐怖才刚刚开始;-如果您考虑如何创建一个对象来模拟这一点:

def test():
    yield 2
    yield 3
    yield 4
现在,您的下一个方法必须携带额外的隐藏状态,以便记住下一个收益率。用一些条件将其包装在一些嵌套循环中,然后将其展开到单个条目中,这将成为一场噩梦。

不。像这样:

>>> def test():
...    x = 0
...    while True:
...       x += 1
...       yield x
...
>>> type(test)
<type 'function'>
按照你的想法去做,恐怖才刚刚开始;-如果您考虑如何创建一个对象来模拟这一点:

def test():
    yield 2
    yield 3
    yield 4

现在,您的下一个方法必须携带额外的隐藏状态,以便记住下一个收益率。用一些条件将其封装在一些嵌套循环中,然后将其展开到单个条目中,这将成为一场噩梦。

这正是我想要的答案。我不知道该如何确切地说出这种语言在幕后的作用。我很高兴你使用了dis模块-我知道我在寻找什么,但无法想出措辞来实际找到结果。在这种情况下,我认为你会发现阅读发电机首次提出的政治公众人物计划是有益的-你现在掌握了足够多的知识来理解其中的大部分内容:-这正是我正在寻找的答案。我不知道该如何确切地说出这种语言在幕后的作用。我很高兴您使用了dis模块-我知道我在寻找什么,但无法想出实际找到结果的措辞。在这种情况下,我认为您会发现阅读发电机首次提出的政治公众人物计划是有益的-您现在掌握了足够的知识,能够理解其中的大部分内容:-谢谢。我只是不确定这两个对象最终是否归结为相同的字节码。谢谢。我只是不确定这两个对象最终是否归结为相同的字节码。