生成器、迭代器、递归

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
#实现了累乘
posted @ 2016-08-11 15:31  哈嘉好啊  阅读(138)  评论(0编辑  收藏  举报