• python 3 面向过程编程


    python 3 面向过程编程

    核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就像设计好一条工业流水线,是一种机械式的思维方式。

    1、优点:程序结构清晰,可以把复杂的问题简单化,流程化。

    2、缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身。

    3、应用场景:linux内核,git,httpd,shell脚本.

    grep -rl 'error' /dir/
    def init(func):
    
        def wrapper(*args,**kwargs):
    
            g=func(*args,**kwargs)
    
            next(g)
    
            return g
    
        return wrapper
    
     
    
    #第一阶段:找到所有文件的绝对路径
    
    import os
    
    @init
    
    def search(target):
    
        while True:
    
            filepath=yield
    
            g=os.walk(filepath)
    
            for pardir,_,files in g:
    
                for file in files:
    
                    abspath=r'%s\%s' %(dirpath,file)
    
                    target.send(abspath)
    
     
    
    #第二阶段:打开文件
    
    @init
    
    def opener(target):
    
        while True:
    
            abspath=yield
    
            with open(abspath,'rb') as f:
    
                target.send((abspath,f))
    
     
    
    #第三阶段:循环读出每一行内容
    
    @init
    
    def cat(target):
    
        while True:
    
            abspath,f=yield #(abspath,f)
    
            for line in f:
    
                res=target.send((abspath,line))
    
                if res:break
    
     
    
    #第四阶段:过滤
    
    @init
    
    def grep(pattern,target):
    
        tag=False
    
        while True:
    
            abspath,line=yield tag
    
            tag=False
    
            if pattern in line:
    
                target.send(abspath)
    
                tag=True
    
     
    
    #第五阶段:打印该行属于的文件名
    
    @init
    
    def printer():
    
        while True:
    
            abspath=yield
    
            print(abspath)
    
     
    
    g = search(opener(cat(grep('error'.encode('utf-8'), printer()))))
    
    g.send(r'E:projectPY18lianxi111222')
    View Code
  • 相关阅读:
    POJ3258River Hopscotch(二分)
    POJ3273Monthly Expense(二分)
    POJ1002487-3279(map)
    HDU 3123 GCC
    POJ2031Building a Space Station
    POJ3096Surprising Strings(map)
    模板类
    POJ1265Area
    【ZZ】C 语言中的指针和内存泄漏 & 编写高效的C程序与C代码优化
    学习笔记之MySQL
  • 原文地址:https://www.cnblogs.com/qiangyuge/p/7277272.html
Copyright © 2020-2023  润新知