Python___生成器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python___生成器相关的知识,希望对你有一定的参考价值。

生成器:

  在函数内部包含yield关键字,那么该函数执行的结果就是生成器(生成器就是迭代器)

def func():
    print(first)
    yield 1111
    print(second)
    yield 2222
g = func()
print(next(g))
print(next(g))
from collections import Iterator
print(isinstance(g,Iterator))#判断g是否是生成器

yield的功能:1.把函数的执行结果做成迭代器(帮函数封装好__iter__,__next__方法)

      2.函数暂停与再继续运行的状态是由yield保存的

def func(n):
    while True:
        yield n
        n += 1
g = func(0)
print(next(g))

def my_range(start,stop):
    while True:
        if start == stop:
            raise StopIteration
        else:
            yield start
            start += 1
g = my_range(1,3)
for i in g:
    print(i)

yield与return的比较?

  相同点:都有返回值的功能

  不同点:return只能返回一次值,而yield可以返回多次值

import time
def tail(filepath):
    with open(filepath,r) as f:
        f.seek(0,2)
        while True:
            line = f.readline()
            if line:
                yield line
            else:
                time.sleep(0.2)
lines = tail(access.log)

#管道是传递不同介质之间数据的问题
def grep(pattern,lines):
    for line in lines:
        if pattern in lines:
            print(line,end = ‘‘)
grep(error,lines)

 

以上是关于Python___生成器的主要内容,如果未能解决你的问题,请参考以下文章

Python小代码_12_生成前 n 行杨辉三角

python之迭代器和生成器

python小知识片段

python小知识片段

keras快速上手-基于python的深度学习实践_第8章_文字生成源代码

[AndroidStudio]_[初级]_[配置自动完成的代码片段]