直接上代码
第一轮
# 避免一次性在内存创建很多数据
def func():
yield 1
yield 2
yield 3
obj = func()
v1 = obj.__next__()
print(v1)
# __next__ 会从上一次位置开始继续执行
#v2 = obj.__next__()
#print(v2)
# __next__ 会长上一次位置开始继续执行
#v3 = obj.__next__()
#print(v3)
结果如下
1
第二轮
# 避免一次性在内存创建很多数据
def func():
yield 1
yield 2
yield 3
obj = func()
v1 = obj.__next__()
print(v1)
# __next__ 会从上一次位置开始继续执行
v2 = obj.__next__()
print(v2)
# __next__ 会长上一次位置开始继续执行
#v3 = obj.__next__()
#print(v3)
结果如下
1
2
第三轮
# 避免一次性在内存创建很多数据
def func():
yield 1
yield 2
yield 3
obj = func()
v1 = obj.__next__()
print(v1)
# __next__ 会从上一次位置开始继续执行
v2 = obj.__next__()
print(v2)
# __next__ 会长上一次位置开始继续执行
v3 = obj.__next__()
print(v3)
结果如下
1
2
3
另外一种写法
def func():
yield 1
yield 2
yield 3
obj = func()
for item in obj:
print(item)
结果如下
1
2
3
要用生成器函数,可以举个例子。比如要生成很多数字。如果用list,就会消耗很多内存,这是不可取的。
def getManyNum(limit):
num = 0
while num < limit:
yield num
num += 1
nums = getManyNum(10000000000)
for item in nums:
print(item)
给个赞呗~