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 MD5文件生成码
Jan 12 Python
从零学Python之入门(三)序列
May 25 Python
Python中AND、OR的一个使用小技巧
Feb 18 Python
python中管道用法入门实例
Jun 04 Python
Python实现简单截取中文字符串的方法
Jun 15 Python
解决Python传递中文参数的问题
Aug 04 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
python实现电子书翻页小程序
Jul 23 Python
python 弧度与角度互转实例
Apr 15 Python
python自动计算图像数据集的RGB均值
Jun 18 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 11 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基于imap获取邮件实例
2014/11/11 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
jQuery实现日历效果
2020/09/11 jQuery
python去掉字符串中重复字符的方法
2014/02/27 Python
TensorFlow实现模型评估
2018/09/07 Python
Python文件操作函数用法实例详解
2019/12/24 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
三严三实对照检查材料
2014/09/22 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
2015年公司工作总结
2015/04/25 职场文书
《植树问题》教学反思
2016/03/03 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技