python面向过程的编程思想
时间:2020-03-26
本文章向大家介绍python面向过程的编程思想,主要包括python面向过程的编程思想使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# 面向过程的编程思想: # 核心是"过程"二字,过程即流程,指的是做事的步骤:先什么、再什么、后干什么 # 基于该思想编写程序就好比在设计一条流水线 # 优点:复杂的问题流程化、进而简单化 # 缺点:扩展性非常差 # 面向过程的编程思想应用场景解析: # 1、不是所有的软件都需要频繁更迭:比如编写脚本 # 2、即便是一个软件需要频繁更迭,也不并不代表这个软件所有的组成部分都需要一起更迭
示例:(实现grep -rl )
import os # g=os.walk(r"E:\oldboy\my_code\grep-rl\a") #得到一个生成器 # # print(g) # for pardir,_,files in g: # for file in files: # abs_path=r"{}\\{}".format(pardir,file) # print(abs_path) #打印E:\oldboy\my_code\grep-rl\a下所有文件的绝对路径 # E:\oldboy\my_code\grep-rl\a\\a.txt # E:\oldboy\my_code\grep-rl\a\b\\b.txt # E:\oldboy\my_code\grep-rl\a\b\d\\d.txt # E:\oldboy\my_code\grep-rl\a\c\\c.txt # E:\oldboy\my_code\grep-rl\a\c\e\\e.txt def init(func): def inner(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return inner #第一步:拿到一个文件夹下所有文件的绝对路径 @init def search(target): while True: filepath=yield g=os.walk(filepath) for pardir,_,files in g: for file in files: abs_path=r"{}\{}".format(pardir,file) # print(abs_path) #打印E:\oldboy\my_code\grep-rl\a下所有文件的绝对路径 target.send(abs_path) #把abs_path传给下一阶段opener() #第二步:打开文件拿到文件对象f @init def opener(target): while True: abs_path=yield with open(abs_path,"r",encoding="utf-8") as f: #把(abs_path,f)传给下一个阶段cat() target.send((abs_path,f)) #第三步:读取f的每一行内容 @init def cat(target): while True: abs_path,f=yield for line in f: #把(abs_path,line)传给下一个阶段grep() res=target.send((abs_path, line)) #满足某种条件,break掉for循环 if res: break #第四步:判断python in line @init def grep(target,pattern): res = False #满足变量先定义后使用 while True: abs_path,line=yield res res=False #每次打开新文件都默认为False if pattern in line: #把abs_path传给下一个阶段 res=True #当line中有匹配字段,通知上一阶段跳出for target.send(abs_path) #第五步:打印文件路径 @init def printer(): while True: abs_path=yield print("{}".format(abs_path)) g=search(opener(cat(grep(printer(),"python")))) g.send(r"E:\oldboy\my_code\grep-rl\a")
原文地址:https://www.cnblogs.com/baicai37/p/12573921.html
- CSS基础语法(一) CSS的3种引入
- php 实现文件下载
- Linux下Sublime Text 2的安装
- php判断客户端UserAgent
- CSS基础语法(二) CSS的9种选择器
- vue表单详解——小白速会
- php curl获取网页内容乱码和获取不到内容的解决方法
- vue组件详解(一)——组件与复用
- 【LeetCode 459】关关的刷题日记42 – Repeated Substring Pattern
- HDU 1848 Fibonacci again and again(SG函数)
- php 分页相关
- 最简单的php导出excel文件方法
- vue组件详解(二)——使用props传递数据
- Android获取QQ和微信的聊天记录,并保存到数据库
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux系统安全配置iptables服务介绍
- ThreadLocal企业中真实应用
- python第五十二课--自定义异常类
- python第五十三课——time模块
- 从亲身经历谈谈如何用Git分支解决项目生产实践中的痛点
- mysql数据库基础命令(一)
- Linux系统Logrotate服务介绍
- python五十四课——datetime模块
- python五十五课——calendar模块
- python五十六课——正则表达式(常用函数之match)
- python五十六课——正则表达式(常用函数之search())
- python五十六课——正则表达式(常用函数之findall)
- python五十七课——正则表达式(元字符)
- python五十七课——正则表达式(边界字符)
- python五十七课——正则表达式(多个字符)