Python 什么是;对于生成器()中的i:“;做

Python 什么是;对于生成器()中的i:“;做,python,for-loop,generator,Python,For Loop,Generator,有人能解释一下每一步的作用吗 我从未见过在X中使用“for I:”,其中X是一个生成器,我无法理解如果I没有插入到()之间,它是如何与函数交互的 for的范围仅限于表达式的范围。如果表达式调用一个函数,那么它的值就是从函数返回的值,因此for的范围超过该函数的结果 请注意,尽管这里的fib不是一个函数,但它是一个生成器。它依次生成每个步骤的值。for的范围仅限于表达式的范围。如果表达式调用一个函数,那么它的值就是从函数返回的值,因此for的范围超过该函数的结果 请注意,尽管这里的fib不是一个函

有人能解释一下每一步的作用吗

我从未见过在X中使用“for I:”,其中X是一个生成器,我无法理解如果I没有插入到()之间,它是如何与函数交互的


for
的范围仅限于表达式的范围。如果表达式调用一个函数,那么它的值就是从函数返回的值,因此for的范围超过该函数的结果


请注意,尽管这里的
fib
不是一个函数,但它是一个生成器。它依次生成每个步骤的值。

for
的范围仅限于表达式的范围。如果表达式调用一个函数,那么它的值就是从函数返回的值,因此for的范围超过该函数的结果


请注意,尽管这里的
fib
不是一个函数,但它是一个生成器。它依次生成每个步骤的值。

for
的范围仅限于表达式的范围。如果表达式调用一个函数,那么它的值就是从函数返回的值,因此for的范围超过该函数的结果


请注意,尽管这里的
fib
不是一个函数,但它是一个生成器。它依次生成每个步骤的值。

for
的范围仅限于表达式的范围。如果表达式调用一个函数,那么它的值就是从函数返回的值,因此for的范围超过该函数的结果


请注意,尽管这里的
fib
不是一个函数,但它是一个生成器。它依次生成每个步骤的值。

任何包含的函数都将返回一个。for循环运行该生成器以一次返回一个值

运行时:

for i in fib():
    print(i)
发电机的实际运行机制包括:

_iterator = iter(fib())
while True:
    try:
        i = next(_iterator)
    except StopIteration:
        break
    print(i)
如您所见,i变量被指定为调用生成器上的next()以获取下一个值的结果


希望这能清楚地说明i的来源:-)

任何包含a的函数都将返回a。for循环运行该生成器以一次返回一个值

运行时:

for i in fib():
    print(i)
发电机的实际运行机制包括:

_iterator = iter(fib())
while True:
    try:
        i = next(_iterator)
    except StopIteration:
        break
    print(i)
如您所见,i变量被指定为调用生成器上的next()以获取下一个值的结果


希望这能清楚地说明i的来源:-)

任何包含a的函数都将返回a。for循环运行该生成器以一次返回一个值

运行时:

for i in fib():
    print(i)
发电机的实际运行机制包括:

_iterator = iter(fib())
while True:
    try:
        i = next(_iterator)
    except StopIteration:
        break
    print(i)
如您所见,i变量被指定为调用生成器上的next()以获取下一个值的结果


希望这能清楚地说明i的来源:-)

任何包含a的函数都将返回a。for循环运行该生成器以一次返回一个值

运行时:

for i in fib():
    print(i)
发电机的实际运行机制包括:

_iterator = iter(fib())
while True:
    try:
        i = next(_iterator)
    except StopIteration:
        break
    print(i)
如您所见,i变量被指定为调用生成器上的next()以获取下一个值的结果


希望这能清楚地说明i的来源:-)

要理解这一点,您必须了解
yield
关键字的作用。请看一下:

现在你知道了,
fib()
不是一个函数,而是一个生成器。 因此,在代码中:

def fib():
    a, b = 0,1
    while True:
        yield b    #from here value of b gets returned to the for statement
        a,b = b, a + b
for i in fib():
    print(i)

因为
永远不会得到假值。它一直在运行。

要理解这一点,您必须了解
yield
关键字的作用。请看一下:

现在你知道了,
fib()
不是一个函数,而是一个生成器。 因此,在代码中:

def fib():
    a, b = 0,1
    while True:
        yield b    #from here value of b gets returned to the for statement
        a,b = b, a + b
for i in fib():
    print(i)

因为
永远不会得到假值。它一直在运行。

要理解这一点,您必须了解
yield
关键字的作用。请看一下:

现在你知道了,
fib()
不是一个函数,而是一个生成器。 因此,在代码中:

def fib():
    a, b = 0,1
    while True:
        yield b    #from here value of b gets returned to the for statement
        a,b = b, a + b
for i in fib():
    print(i)

因为
永远不会得到假值。它一直在运行。

要理解这一点,您必须了解
yield
关键字的作用。请看一下:

现在你知道了,
fib()
不是一个函数,而是一个生成器。 因此,在代码中:

def fib():
    a, b = 0,1
    while True:
        yield b    #from here value of b gets returned to the for statement
        a,b = b, a + b
for i in fib():
    print(i)

因为
永远不会得到假值。它一直在运行。

for loop
如果您像上面那样使用它,它会生成可丢弃的变量。例如,循环中反复使用
列表对象
,但一次性迭代器在使用后会自动删除

yield
是一个类似于
return
的术语,用于函数中。它给出一个结果,并在循环中再次使用它。 你的代码给你的数字称为斐波那契

def fib():
    a, b = 0,1 #initially a=0 and b=1
    while True: #infinite loop term.
        yield b #generate b and use it again.
        a,b = b, a + b #a and b are now own their new values.

for i in fib(): #generate i using fib() function. i equals to b also thanks to yield term.
    print(i) #i think you known this
    if i>100:
        break #we have to stop loop because of yield.

for循环
如果您像上面那样使用它,则会生成一次性变量。例如,循环中反复使用
列表对象
,但一次性迭代器在使用后会自动删除

yield
是一个类似于
return
的术语,用于函数中。它给出一个结果,并在循环中再次使用它。 你的代码给你的数字称为斐波那契

def fib():
    a, b = 0,1 #initially a=0 and b=1
    while True: #infinite loop term.
        yield b #generate b and use it again.
        a,b = b, a + b #a and b are now own their new values.

for i in fib(): #generate i using fib() function. i equals to b also thanks to yield term.
    print(i) #i think you known this
    if i>100:
        break #we have to stop loop because of yield.

for循环
如果您像上面那样使用它,则会生成一次性变量。例如,循环中反复使用
列表对象
,但一次性迭代器在使用后会自动删除

yield
是一个类似于
return
的术语,用于函数中。它给出一个结果,并在循环中再次使用它。 你的代码给你的数字称为斐波那契

def fib():
    a, b = 0,1 #initially a=0 and b=1
    while True: #infinite loop term.
        yield b #generate b and use it again.
        a,b = b, a + b #a and b are now own their new values.

for i in fib(): #generate i using fib() function. i equals to b also thanks to yield term.
    print(i) #i think you known this
    if i>100:
        break #we have to stop loop because of yield.

for循环
如果您像上面那样使用它,则会生成一次性变量。例如,循环中反复使用
列表对象
,但一次性迭代器在使用后会自动删除

yield
是一个类似于
return
的术语,用于函数中。它给出一个结果,并在循环中再次使用它。 你的代码给你的数字称为斐波那契

def fib():
    a, b = 0,1 #initially a=0 and b=1
    while True: #infinite loop term.
        yield b #generate b and use it again.
        a,b = b, a + b #a and b are now own their new values.

for i in fib(): #generate i using fib() function. i equals to b also thanks to yield term.
    print(i) #i think you known this
    if i>100:
        break #we have to stop loop because of yield.
我没有