生成器:
a.可以看成是一个可以存储多个数据的容器。需要里面的数据的 时候就生成一个,里面的数据只能
从前往后一个一个生成,不能从后往前,生成的数据,不能再次生成了。
b.获取生成器里面的数据,需要使用 next() 方法
c.只要函数生命中有yield关键字,函数就不再是一个单纯的函数,而是变成一个生成器
和列表比较:列表存数据,数据必须在实实在在的数据,一个数据占用一定的内存空间。
生成器存数据,存的是产生数据的算法,没有数据去占内存空间
# 11,2,3,5,8,13,21...
# def func1():
# if False:
# yield 100
# 11,2,3,5,8,13,21...
def xu_lie(n):
pre_1 =1
pre_2 =1
for x in range(1,n+1):
if x == 1 or x == 2:
current = 1
yield current
#print(current)
continue
current == pre_1 + pre_2
pre_1,pre_2 = pre_2,current
#print(current)
yield current
xu_lie(10)
print(xu_lie.__next__())
print(xu_lie.__next__())
if __name__ == '__main__':
pass
#例子
list1 = list(i for i in range(10))
print (list1)
x = (i for i in range(10))
# x 就是一个生成器,用来产生数据
print(x)
# # 取数据
print(x.__next__())
print(x.__next__())
num = 100