day13-生成器

发布时间:2019-06-09 21:50:33编辑:auto阅读(1883)

    def generator():
        print(1)
        yield 'a'
    rcp = generator()
    print(rcp.__next__())

      只要含有yield关键字的函数都是生成器函数。yield不能和return共用且需要写在函数内。

      生成器函数 : 执行之后会得到一个生成器作为返回值。

    def generator():
        print(1)
        yield 'a'
        print(2)
        yield 'b'
    rcp = generator()
    put = rcp.__next__()
    print(put)
    put = rcp.__next__()
    print(put)

      yield没有结束一个函数,可以连续打印。

    # 产生200个字符串def putStr():    for i in range(200):        yield '我最帅%d'%iput = putStr()for i in put:    print(i)
    
    # 可不可以在两百个字符串中只取五十个,然后再紧接着上一次结束的地方再取五十个呢?def putStr():    for i in range(200):        yield '你最帅%s'%iput = putStr()count = 0for i in put:    print(i)    count += 1    if count >= 50:        breakprint('----------------------')for i in put:    print(i)    count += 1    if count >= 100:        break

      生成器可以生成n个你想要的字符串。

    # 监听文件输入
    def func(filename):
        f = open(filename,encoding='utf-8')
        while True:
            line = f.readline()
            if line.strip():
                yield line
    g = func('file')
    for i in g:
        print(i)

      一个利用监听器实现的监听文件输入操作。

关键字