zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Abaqus刚体建模方法
    Abaqus 幅值曲线—与时间相关的函数定义
    Abaqus/CAE 热-力耦合分析
    数据库设计要遵循的点
    c# 面向对象的编程思想
    领导要求你去做不属于你工作范围内的工作,你是答应还是委婉拒绝?
    工作总结&成长感悟
    jquery中的ajax方法参数
    swal() 弹出删除确认框
    serializearray()的具体使用
  • 原文地址:https://www.cnblogs.com/qiangyuge/p/7277272.html
Copyright © 2011-2022 走看看