10-4 生成器

Posted cheryol

tags:

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

生成器

  即自己写的函数

简单的生成器函数

  只要包括__next__()函数和_iter__()的就是生成器

def genetator():
    print(1)
    return ‘a‘
ret = genetator()
print(ret)

结果:
1
a
只要含有yeild关键字的函数都是生成器函数,且与return不能共用,且需要写在函数内部
def genetator():
    print(1)
    yield ‘a‘
# 生成器函数:执行之后会得到一个生成作为返回值
ret = genetator()
print(ret)#结果:<generator object genetator at 0x0225DCC0>
print(ret.__next__())
# 结果:
# 1
# a
ret.__iter__()

 

def wahaha():
    for i in range(20):
        yield ‘娃哈哈%s‘%i
g=wahaha()
#只拿前五个,用count计数
count = 0
for k in g:
    count += 1
    print(k)
    if count > 5:
        break

#随时可以再拿下一个值
print(‘ooooo‘,g.__next__())
每生成一个生成器,都互不相关,各个执行

 

监听文件输入的例子(生成器)

# 监听文件的输入
def tail(filename):
    f = open(filename,encoding=‘utf-8‘)
    while True:
        line = f.readline()
        if line.strip():
            print(‘***‘,line.strip())
tail(‘info‘)
#监听文件的输入,并对内容进行过滤
def tail(filename):
    f = open(filename,encoding=‘utf-8‘)
    while True:
        line = f.readline()
        if line.strip():
            yield line.strip()
g = tail(‘info‘)
for i in g:
    if ‘python‘ in i:
        print(‘******‘,i,‘~~~~‘)
    if ‘www‘ in i:
        print(‘******‘,i,‘!!!!‘)

  

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

Apollo Codegen 没有找到生成代码的操作或片段

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

vscode代码片段生成vue模板

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率

vs 2010代码片段