一、面向过程编程

#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之面向过程编程的更多相关文章

  1. python 3 面向过程编程

    python 3 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就像设计好一条工业流水线,是一种机械式的思维方式. 1.优点:程序结构清晰,可以把复杂的问题简单化,流程 ...

  2. python基础-面向过程编程

    面向过程编程 面向过程编程其实是一种机械式的思维方式,其核心就是"过程". 过程指的是一种解决问题的步骤,即先干什么再干什么,最后干什么. 优点:将复杂的问题流程化,进而简单化. ...

  3. 匿名函数 python内置方法(max/min/filter/map/sorted/reduce)面向过程编程

    目录 函数进阶三 1. 匿名函数 1. 什么是匿名函数 2. 匿名函数的语法 3. 能和匿名函数联用的一些方法 2. python解释器内置方法 3. 异常处理 面向过程编程 函数进阶三 1. 匿名函 ...

  4. Python 迭代器-生成器-面向过程编程

    上节课复习:1. 函数的递归调用 在调用一个函数的过程中又直接或者间接地调用了函数本身称之为函数的递归 函数的递归调用有两个明确的阶段: 1. 回溯 一层一层地调用本身 注意: 1.每一次调用问题的规 ...

  5. python函数:匿名函数、函数递归与二分法、面向过程编程

    今天主要讲三大部分内容: 一.匿名函数二.函数递归与二分法三.面向过程编程 一.匿名函数: """ 1. 什么时匿名函数 def定义的是有名函数:特点是可以通过名字重复调 ...

  6. day22 yield的表达式的应用,面向过程编程,内置函数前几个

    Python之路,Day10 = Python基础10 生成器表达式: (i for i in range(10) if i > 5)os.walk(r'文件路径')返回一个迭代器, 第一次ne ...

  7. PYTHON-匿名函数,递归与二分法,面向过程编程

    """匿名函数1 什么是匿名函数 def定义的是有名函数:特点是可以通过名字重复调用 def func(): #func=函数的内存地址 pass 匿名函数就是没有名字的 ...

  8. python全栈开发-Day11 迭代器、生成器、面向过程编程

    一. 迭代器 一 .迭代的概念 迭代器即迭代的工具,那什么是迭代呢? 迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而 ...

  9. python基础——面向过程的编程思想及举例

    面向过程的编程思想 1.面向过程的编程思想及举例 写程序时: 要先想功能,分步实现 2. os模块中walk输出目录中文件路径 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上 ...

  10. Python之路【第六篇】:Python迭代器、生成器、面向过程编程

    阅读目录 一.迭代器 1.迭代的概念 #迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 代码如下: while True: ...

随机推荐

  1. case 和decode的区别

    区别: decode是pl/sql语法,只能在oracle中使用,case when是标准SQL的语法,哪儿都能用,也就是说移植性更强. decode像是case when的精简版,当要实现的功能比较 ...

  2. python Pandas文件读写

  3. IntelliJ IDEA中设置同时打开多个文件且分行显示

    [转载]原文链接:https://blog.csdn.net/lwl20140904/article/details/73275897 有时候要是打开多个文件,要么都显示在一行,要么因为空间不足,就给 ...

  4. spring源码学习之默认标签的解析(二)

    这个是接着上一篇来写,主要是这章内容比较多,还是分开来写吧! 一.AbstractBeanDefinition属性介绍 XML中的所有的属性都可以在GenericBeanDefinition中找到对应 ...

  5. Django项目:CRM(客户关系管理系统)--03--02PerfectCRM创建ADMIN页面01

    八.CRM项目创建king_admin python.exe manage.py startapp king_admin 'king_admin', 九.CRM项目分发URL "" ...

  6. Codeforces 113B

    题目链接 B. Petr# time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  7. POJ 1061 扩展欧几里得

    #include<stdio.h> #include<string.h> typedef long long ll; void gcd(ll a,ll b,ll& d, ...

  8. RabbitMQ的优劣势

    优势:支持集群化.高可用部署架构.消息高可靠支持 复杂系统的解耦: 复杂链路的异步调用 瞬时高峰的削峰处理. 这里提一下RocketMQ,是阿里开源的,经过阿里的生产环境的超高并发.高吞吐的考验.性能 ...

  9. vue 微信内H5调起支付

    在微信内H5调起微信支付,主要依赖于一个微信的内置对象WeixinJSBridge,这个对象在其他浏览器中无效. 主要代码: import axios from 'axios'; export def ...

  10. ANN中乘积量化与多维倒排小结

    目前特征向量的比对加速优化能极大缩短比对耗时,改善用户体验. 优化的途径主要有两种,一是使用指令集(SSE,AVX)加速运算.二是使用ANN替代暴力搜索. 乘积量化和倒排索引组合是ANN中效果较好且实 ...