zoukankan      html  css  js  c++  java
  • python的生成器

    1、 什么是生成器:只要在函数体内出现yield关键字,那么再执行函数就不会执行函数代码,会得到一个结果,该结果就是生成器                                                                                  2、生成器就是迭代器

    yield的功能                                                                                                                                     

    1)、yield为我们提供了一种自定义迭代器对象的方法                                                                         

    2)、yield与return的区别:

      1.yield可以返回多个值

      2.函数暂停和再继续是由yield帮我们保存的

    3、设计一个查看实时更新文件的更新状态,比如日志文件

    import time  
    
    def tail(filepath):                      #定义一个查看文件的函数
    
        with open(filepath, 'rb') as f:      #打开形参为filepath
            f.seek(0,2)                      #把光标移动到末尾
    
            while True:                      #循环监控日志
    
                data = f.readline()          #读取文件末尾
    
                if data:                    #加入有数据就用yield返回
    
                    yield data
    
                else:                        #否则就睡眠0.05秒
    
                    time.sleep(0.05)
    
    def grep(file, k):                      #定义过滤关键字函数
    
        for i in tail(file):                #循环生成器中的数据
    
            if k in i.decode('utf-8'):      #因为是用二进制读取方式,所以需要解码显示
    
                print(i.decode('utf-8'))
    
    grep('a.txt', '500')                    #监控a.txt最新日志,并过滤500的错误代码
    

     

  • 相关阅读:
    免费证书Let’s Encrypt
    kubernetes中使用ServiceAccount创建kubectl config 文件
    kubectl alias auto complete
    kubernetes dashboard permission errors
    du 与df 统计系统磁盘不一致原因与解决方法
    大访问量、高并发网站优化
    React的Sass配置
    转:Zepto的使用以及注意事项
    转: zepto的使用方法
    Extjs4 修改combox中store的数据
  • 原文地址:https://www.cnblogs.com/shiguoqiang/p/10392245.html
Copyright © 2011-2022 走看看