码迷,mamicode.com
首页 > 编程语言 > 详细

day5-python之面向过程编程

时间:2017-12-12 23:56:15      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:打印   程序   users   imp   grep   log   ext   功能   highlight   

一、面向过程编程

#1、首先强调:面向过程编程绝对不是用函数编程这么简单,面向过程是一种编程思路、思想,而编程思路是不依赖于具体的语言或语法的。言外之意是即使我们不依赖于函数,也可以基于面向过程的思想编写程序

#2、定义
面向过程的核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么

基于面向过程设计程序就好比在设计一条流水线,是一种机械式的思维方式

#3、优点:复杂的问题流程化,进而简单化

#4、缺点:可扩展性差,修改流水线的任意一个阶段,都会牵一发而动全身

#5、应用:扩展性要求不高的场景,典型案例如linux内核,git,httpd

#6、举例
流水线1:
用户输入用户名、密码--->用户验证--->欢迎界面

流水线2:
用户输入sql--->sql解析--->执行功能

二、过滤文件内容  

import os


def init(func):
    def wrapper(*args, **kwargs):
        g = func(*args, **kwargs)
        next(g)
        return g
    return wrapper


# 第一阶段:找到所有文件的绝对路径
@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‘ % (pardir, file)
                target.send(abspath)


# search(r‘C:\Users\Administrator\PycharmProjects\python18期周末班\day5\aaa‘)
# g=search()
# g.send(r‘C:\Python27‘)

# 第二阶段:打开文件
@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(‘os‘.encode(‘utf-8‘), printer()))))
# g.send(r‘C:\Users\Administrator\PycharmProjects\python18期周末班\day5\aaa‘)

g.send(r‘C:\Users\Administrator\PycharmProjects\python18期周末班‘)  ##指定父目录
# a1.txt,a2.txt,b1.txt

  

day5-python之面向过程编程

标签:打印   程序   users   imp   grep   log   ext   功能   highlight   

原文地址:http://www.cnblogs.com/xiechao621/p/8029920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!