python田字格函数简化代码_[Python]使用生成器来简化代码
原本只是大概知道生成器是什么,但一直不知道怎么用,或是什么情景下用,后来才发现:
在需要一边读数据一边处理任务时,如果直接为每个任务都写一个函数,那么读数据的部分就要在每个函数都重复一遍
直接将所有任务都写在一起不现实,尤其是当任务比较多时,一旦有时候忘记注释某个任务,可能会影响之后的任务
之后突然想到 yield 这个python关键字,可以将读数据的部分抽出来,写作一个生成器,在任务函数的部分只需用for循环逐个访问即可
简要理解:
yield : 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。
不同于return,一旦return则意味着函数已经执行完毕,而yield则只是暂时停在这里,之后当再次调用这个函数时会返回下一个迭代值。
下面给出用生成器的例子
#An example for using generator
'''
Not using generator, just repeating the file reading operation at every function.
'''
#write an extra 'hello' at each line in file 'f_source', then save it to file 'f_target'
def write_extra(f_source):
f_target = 'target.txt'
with open(f_source, 'r') as source, open(f_target, 'w') as target:
for line in source.readlines():
target.write(line+'hello'+'\n')
#parse each line in file 'f_source'
#the simplest way is just print it out..
def parse_line(f_source):
with open(f_source, 'r') as source:
for line in source.readlines():
line = line.strip().split()
print(line) #print line as a list split by char ' '
'''
Using generator
'''
def read_file(f_source):
with open(f_source, 'r') as source:
for line in source.readlines():
yield line
def new_parse_line(f_source):
for line in read_file(f_source):
line = line.strip().split()
print(line)
def new_write_extra(f_source):
f_target = 'target.txt'
with open(f_target, 'w') as target:
for line in read_file(f_source):
target.write(line+'hello'+'\n')
python田字格函数简化代码_[Python]使用生成器来简化代码相关推荐
- python replace函数 成功 失败_解决python replace函数替换无效问题
解决python replace函数替换无效问题 python replace函数替换无效问题 str = "hello,china!" str.replace("hel ...
- python 定义函数方法,python中函数如何定义?python函数的调用方法介绍
本篇文章给大家带来的内容是关于python中函数如何定义?python函数的调用方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 函数的概念,函数是将具有独立功能的代码块 ...
- python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...
参数在python中总是通过赋值进行传递的.在默认情况下,参数是通过其位置进行匹配的,从左到右,而且必须精确的传递和函数头部参数名一样多的参数. 这种默认的传递方式很简单 def f(a,b,c): ...
- python中函数的调用_慢步python,编程中函数的概念,python中函数的声明和调用
函数,曾经是一个很高大尚的概念.笔者是在高中数学里认识的函数,先是从y=2x+3 这条代数式开始的.y是因变量,x是自变量,y因为x取值的变化而变化. 再后来式子变成这样:f(x)=2x+3,f(x) ...
- python replace函数 成功 失败_请教下调用python string模块的replace方法出错的原因
直接调用没有问题 def test1(): test_str="028-123456" print test_str.replace(old="-",new=& ...
- python find函数实现原理_非常干货:Python 探针实现原理
△点击上方"Python猫"关注 ,回复" 1 "领取电子书 剧照 | <棋魂> 原文:https://segmentfault.com/a/119 ...
- python绝对值函数偏码_绝对值python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 试图建立关分拣python字典,我将如何去打印基于该值的绝对值排序顺序pytho ...
- python1000行代码_用好这3行代码,可以让你的Python脚本速度提升5倍!
Python是一门非常适合处理数据和自动化完成重复性工作的编程语言,我们在用数据训练机器学习模型之前,通常都需要对数据进行预处理,而Python就非常适合完成这项工作,比如需要重新调整几十万张图像的尺 ...
- python分段函数图像画法_数值实验分段函数图像-Python绘图
一.函数说明 在使用python作图时,应用最广的就是matplotlib包,但我们平时使用matplotlib时主要是画一些简单的图表,很少有涉及分段函数.本次针对数值实验中两个较为复杂的函数,使用 ...
- 如何用python计算函数的值域_(Max第一篇)Python基础代数运算大全
@[TOC](目录) 1. 基础运算 1.1 运算代码表格 python中的基本运算符的使用是最基本的内容,需要把每一个运算所使用的符号记住,会对之后的编程有很大的作用 符号 定义 + Additio ...
最新文章
- FAST-LIO2:快速直接的激光雷达与惯导里程计
- webpack -v 指令报错
- shell输出没有换行符
- 一个真正0基础小白学习前端开发的心路历程
- 嘉峪关计算机网络优化,嘉峪关广播电视大学计算机网络技术专业_甘肃报名_网络教育计算机网络技术专业教学计划_中国教育在线...
- BZOJ4241历史研究题解--回滚莫队
- python3安装与环境配置和pip的基本使用
- 数据库连接参数设置,用户登录,密码修改,权限设置,金蝶KIS旗舰版安卓盘点机PDA
- 公司小规模纳税人税务零申报操作说明
- 10分钟入门Python,花5小时写了7个案例和这篇文章值得收藏
- twitter关注排行榜
- epub文件打开乱码_什么是EPUB文件(以及如何打开一个文件)?
- 《让荧光舞一直挥舞下去》
- echarts中设置地图背景图片
- Illegal access: this web application instance has been stopped already. Could not load []. The foll
- 计算机启动异常卡顿,解决开机卡顿的问题,电脑卡在开机界面的解决办法
- 【机器学习】HMM模型
- 数理逻辑——ND系统
- 通过API接口获取数据至后台
- oracle中如何写函数【oracle技术】