原本只是大概知道生成器是什么,但一直不知道怎么用,或是什么情景下用,后来才发现:

在需要一边读数据一边处理任务时,如果直接为每个任务都写一个函数,那么读数据的部分就要在每个函数都重复一遍

直接将所有任务都写在一起不现实,尤其是当任务比较多时,一旦有时候忘记注释某个任务,可能会影响之后的任务

之后突然想到 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]使用生成器来简化代码相关推荐

  1. python replace函数 成功 失败_解决python replace函数替换无效问题

    解决python replace函数替换无效问题 python replace函数替换无效问题 str = "hello,china!" str.replace("hel ...

  2. python 定义函数方法,python中函数如何定义?python函数的调用方法介绍

    本篇文章给大家带来的内容是关于python中函数如何定义?python函数的调用方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 函数的概念,函数是将具有独立功能的代码块 ...

  3. python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...

    参数在python中总是通过赋值进行传递的.在默认情况下,参数是通过其位置进行匹配的,从左到右,而且必须精确的传递和函数头部参数名一样多的参数. 这种默认的传递方式很简单 def f(a,b,c): ...

  4. python中函数的调用_慢步python,编程中函数的概念,python中函数的声明和调用

    函数,曾经是一个很高大尚的概念.笔者是在高中数学里认识的函数,先是从y=2x+3 这条代数式开始的.y是因变量,x是自变量,y因为x取值的变化而变化. 再后来式子变成这样:f(x)=2x+3,f(x) ...

  5. python replace函数 成功 失败_请教下调用python string模块的replace方法出错的原因

    直接调用没有问题 def test1(): test_str="028-123456" print test_str.replace(old="-",new=& ...

  6. python find函数实现原理_非常干货:Python 探针实现原理

    △点击上方"Python猫"关注 ,回复" 1 "领取电子书 剧照 | <棋魂> 原文:https://segmentfault.com/a/119 ...

  7. python绝对值函数偏码_绝对值python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 试图建立关分拣python字典,我将如何去打印基于该值的绝对值排序顺序pytho ...

  8. python1000行代码_用好这3行代码,可以让你的Python脚本速度提升5倍!

    Python是一门非常适合处理数据和自动化完成重复性工作的编程语言,我们在用数据训练机器学习模型之前,通常都需要对数据进行预处理,而Python就非常适合完成这项工作,比如需要重新调整几十万张图像的尺 ...

  9. python分段函数图像画法_数值实验分段函数图像-Python绘图

    一.函数说明 在使用python作图时,应用最广的就是matplotlib包,但我们平时使用matplotlib时主要是画一些简单的图表,很少有涉及分段函数.本次针对数值实验中两个较为复杂的函数,使用 ...

  10. 如何用python计算函数的值域_(Max第一篇)Python基础代数运算大全

    @[TOC](目录) 1. 基础运算 1.1 运算代码表格 python中的基本运算符的使用是最基本的内容,需要把每一个运算所使用的符号记住,会对之后的编程有很大的作用 符号 定义 + Additio ...

最新文章

  1. FAST-LIO2:快速直接的激光雷达与惯导里程计
  2. webpack -v 指令报错
  3. shell输出没有换行符
  4. 一个真正0基础小白学习前端开发的心路历程
  5. 嘉峪关计算机网络优化,嘉峪关广播电视大学计算机网络技术专业_甘肃报名_网络教育计算机网络技术专业教学计划_中国教育在线...
  6. BZOJ4241历史研究题解--回滚莫队
  7. python3安装与环境配置和pip的基本使用
  8. 数据库连接参数设置,用户登录,密码修改,权限设置,金蝶KIS旗舰版安卓盘点机PDA
  9. 公司小规模纳税人税务零申报操作说明
  10. 10分钟入门Python,花5小时写了7个案例和这篇文章值得收藏
  11. twitter关注排行榜
  12. epub文件打开乱码_什么是EPUB文件(以及如何打开一个文件)?
  13. 《让荧光舞一直挥舞下去》
  14. echarts中设置地图背景图片
  15. Illegal access: this web application instance has been stopped already. Could not load []. The foll
  16. 计算机启动异常卡顿,解决开机卡顿的问题,电脑卡在开机界面的解决办法
  17. 【机器学习】HMM模型
  18. 数理逻辑——ND系统
  19. 通过API接口获取数据至后台
  20. oracle中如何写函数【oracle技术】

热门文章

  1. 基于servlet+mysql+jsp实现体育用品商城
  2. 【会当凌绝顶,一览众山小】一款低调奢华有内涵的终端工具: JoyfulPuTTY
  3. ISME | 拟南芥次生代谢物调控微生物组介导的线虫入侵
  4. 【关于几个问题的思考】
  5. 应届生没有钱怎么出去找工作?
  6. 全平台可用且完全免费的国产思维导图知犀
  7. 利用python获取微信企业号打卡数据,并生成windows计划任务
  8. 为什么我不同意建房子
  9. airtest的强制等待\全局隐式等待\显示等待时间设置
  10. 商标申请主体证明文件主体材料资格证明都有哪些