python yield关键词案例测试


Posted in Python onOctober 15, 2019

测试环境

win10

python 3.5

yield功能简介

简单来说,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator

代码演示

例子1: 输出斐波那契?盗星 N 个数

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'shouke'
def fab(max):
  n, a, b = 0, 0, 1
  result = []
  while n < max:
    result.append(b)
    a, b = b, a + b
    n = n + 1
  return result
for n in fab(5):
  print(n)

以上代码虽然可以满足需求,但是存在的问题:该函数在运行中占用的内存会随着参数 max 的增大而增大,如果要控制内存占用,最好不要用 List

改进 使用yield

def fab(max):
  n, a, b = 0, 0, 1
  while n < max:
    yield b   # 使用 yield
    a, b = b, a + b
    n = n + 1
for n in fab(5):
  print(n)

例子2:读二进制方式取文件并生成文件副本

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'shouke'
def read_file(fpath):
  BLOCK_SIZE = 1024
  with open(fpath, 'rb') as f:
    while True:
      block = f.read(BLOCK_SIZE)
      if block:
        yield block
      else:
        return
with open('D:\Downloads\\channels-2.1.7-copy.tar.gz', 'wb') as f:
  for data in read_file('D:\Downloads\\channels-2.1.7.tar.gz'):
    f.write(data)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
python+mysql实现简单的web程序
Sep 11 Python
Python正则表达式使用范例分享
Dec 04 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
softmax及python实现过程解析
Sep 30 Python
Python解析json代码实例解析
Nov 25 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
Django-simple-captcha验证码包使用方法详解
Nov 28 Python
教你如何用Python实现人脸识别(含源代码)
Jun 23 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 Python
python 发送json数据操作实例分析
Oct 15 #Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 #Python
PYTHON绘制雷达图代码实例
Oct 15 #Python
利用Python产生加密表和解密表的实现方法
Oct 15 #Python
python多线程并发及测试框架案例
Oct 15 #Python
浅析PEP570新语法: 只接受位置参数
Oct 15 #Python
浅析PEP572: 海象运算符
Oct 15 #Python
You might like
PHP制作图型计数器的例子
2006/10/09 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
js验证表单大全
2006/11/25 Javascript
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
Angularjs Promise实例详解
2018/03/15 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
python把转列表为集合的方法
2019/06/28 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
马来西亚网上购物:Youbeli
2018/03/30 全球购物
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
保时捷设计:Porsche Design
2019/03/30 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
经典导游欢迎词大全
2014/01/16 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
教师岗位职责
2015/02/03 职场文书
挂职个人工作总结
2015/03/05 职场文书