不明白这种方式的作品

这个问题在这里已经有了答案:

  • “yield”关键字有什么作用? 36个答案

  • 由于在循环中有3个收益声明,因此您将产生三次alpha

    从而:

  • 循环将遍历你的3个元素
  • 对于每个元素你会产生3次
  • 3次3等于9。

    你的输出解释了:

    1                        <-- counter
    ('alpha', 'one')         <-- first yield statement
    2                        <-- counter
    ('alpha', 'two')         <-- second yield statement
    3                        <-- counter
    ('alpha', 'three')       <-- third yield statement
                             <-- print statement in loop in function
    4                        <-- counter
    ('beta', 'one')          <-- first yield statement, second iteration of loop
    5                        <-- counter
    ('beta', 'two')          <-- second yield statement
    6                        <-- counter
    ('beta', 'three')        <-- third yield statement
                             <-- print statement in loop in function
    7                        <-- counter
    ('carotene', 'one')      <-- first yield statement, third iteration of loop
    8                        <-- counter
    ('carotene', 'two')      <-- second yield statement
    9                        <-- counter
    ('carotene', 'three')    <-- third yield statement
                             <-- print statement in loop in function
    

    我= 9,因为循环实际上运行了9次。

    发生的事情是,每次next()被调用时,它都会在前一个yield之后继续执行。

    第一次next()被调用时,下列行在createGenerator()中被执行

    mylist = [ 'alpha', 'beta', 'carotene' ]
        for i in mylist:
            yield i, "one"
    

    第一个收益率返回(“alpha”,“one”)。 此时执行返回到for循环并打印。 在for循环的下一次迭代中,执行返回到先前yield之后的createGenerator()。 以下行被执行:

    yield i, "two"
    

    它返回(“alpha”,“two”)并在for循环中打印。 for循环结束时,发电机没有更多的价值返回,当我==“胡萝卜素”和“三”被放弃

    链接地址: http://www.djcxy.com/p/1555.html

    上一篇: don't understand this works this way

    下一篇: basic understanding about yield