zoukankan      html  css  js  c++  java
  • 10-4 生成器

    生成器的本质就是迭代器

    生成器函数
    只要含有yeild关键字的函数都是生成器函数,且与return不能共用,且需要写在函数内部
    每次调用函数之后函数不执行,返回一个生成器
    每次调用next方法就会取到一个值
    直到取完最后一个,在执行next将会报错

    生成器函数的表现形式

      生成器---自己写的函数

     生成器表达式
    从生成器取值的几个方法:
    1.next
    2.for循环
    3.数据类型的强制转换(占用内存)
    def fun():
        for i in range(20):
        yield "娃哈哈%s"%i
    g = fun()
    print(list(g))

    结果:['娃哈哈0', '娃哈哈1', '娃哈哈2', '娃哈哈3', '娃哈哈4', '娃哈哈5', '娃哈哈6']

    简单的生成器函数

      只要包括__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,'!!!!')
    

      

  • 相关阅读:
    TP实例化模型的两种方式 M() D()
    implode 函数 把数组拼接成字符串
    用array_search 数组中查找是否存在这个 值
    SVN-001
    PHP-006
    Access数据操作-02
    Access数据操作-01
    Html解析
    浏览器Chrome对WebGL支持判断
    浏览器渲染模式设置
  • 原文地址:https://www.cnblogs.com/Cheryol/p/9742552.html
Copyright © 2011-2022 走看看