一,生成器
-
def func():
-
print("111")
-
yield 1
-
print("222")
-
yield 2
-
print("333")
-
yield 3
-
-
res = func() #返回一个对象,生成器
-
r1 = res.__next__() #进入函数找到yield,获取yield后面的值
-
print(r1)
-
r2 = res.__next__() #进入函数找到yield,获取yield后面的值
-
print(r2)
-
r3 = res.__next__() #进入函数找到yield,获取yield后面的值
-
print(r3)
-
# r4 = res.__next__() #进入函数找到yield,获取yield后面的值。此时没有则会报错。
-
# print(r4)
-
-
#保存上一次执行的位置,下次接着上一次的位置去继续执行
-
-
-
结果:
-
-
111
-
1
-
222
-
2
-
333
-
3
-
-
-
-
2,自定义的生成器(具有生成能力的对象)
-
-
def my_range(args):
-
start = 1
-
while True:
-
if start > args:
-
return
-
yield start
-
start += 1
二,迭代器
迭代器不需要我们去写,只要会用,只需要调用for循环即可。迭代器是对__next__方法的封装,
__next__方法在取完值的时候,如果继续取值则会报错。而for循环,则是对其的封装,
不会报错!
三,函数递归(本质一个函数调用另外一个函数)
-
def func(n):
-
n += 1
-
if n > 10:
-
return "end"
-
return func(n)
-
-
结果:
-
-
end
阅读(1627) | 评论(0) | 转发(0) |