让我解释一下这个步骤:
首先,请知道为什么这个函数可以在for循环中使用。 不,这个函数是可重复的。 这意味着此函数每次可以返回一个值。
但是,gen ) )函数中没有__iter__ )、next )方法。 其实藏在yield里。 高级语言就是这样,隐藏了很多东西。 这个和c
语言不同。 C语言可以看到所有的细节。 在此程序运行到yield 1时停止,下一个程序不再运行,返回值“1”。
下一个for的下一个程序接着运行到yeild 2。 停止执行程序时,将返回值“2”。 但是另一个问题是,最后一个yield下面的“next again”会被打印出来吗? 也就是说,执行最后一次yield时,在for i in gen () ()时,发生了什么动作,最后一次yield之后的代码也可能被执行了。
将此步骤修改为:
#! /usr/hldyb/env python
#__metaclass__=type
defgen(:
打印中心'
yield 1
打印下一步
返回
打印' next2'
yield 2
打印' next3'
for i in gen () :
print i
##################
程序打印如下。
娱乐城
1
下一步
我发现这是yield和return的区别。 yield可以向下运行。 另一方面,如果return返回,则无法执行此函数的其余部分。
4: yield原理