27、生成器:
1、 >>> def f1():
... print(123)
... yield 1
... yield 2
... yield 3
...
>>> ret = f1()
>>> ret.__next__() # 进入函数找到yield 获取yield 后面的数据。
123
1
>>> ret.__next__() #进入函数找到yield 获取yield 后面的数据。
2
>>> ret.__next__() # 进入函数找到yield 获取yield 后面的数据。
3
2、 >>> def f1():
... print(123)
... yield 1
... yield 2
... yield 3
...
>>> ret = f1()
>>> ret1 = list(ret)
123
>>> print(ret1)
[1, 2, 3]
3、生成器实现range()
def myrange(arg):
start = 0
while True:
if start > arg:
return
yield start
start += 1
ret = myrange(3)
r1 = ret.__next__()
print(r1)
r1 = ret.__next__()
print(r1)
r1 = ret.__next__()
print(r1)
r1 = ret.__next__()
print(r1)
r1 = ret.__next__()
print(r1)
28、迭代器:
会使用封装了迭代器的 for 循环。
29、递归:
1、实现累乘 :2 * 3 * 4 * 5 * 6 * 7
def func(n):
n += 1
if n > 6:
return n
return n * func(n)
ret = func(1)
print(ret)
#2 * func(2)
#2 * 3 * func(3)
#2 * 3 * 4 * func(4)
#2 * 3 * 4 * 5 * func(5)
#2 * 3 * 4 * 5 * 6 * func(6)
#2 * 3 * 4 * 5 * 6 * 7
#实现了累乘