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基础教程之缩进介绍
Aug 29 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
Python使用一行代码获取上个月是几月
Aug 30 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
python安装numpy和pandas的方法步骤
May 27 Python
python join方法使用详解
Jul 30 Python
python Kmeans算法原理深入解析
Aug 23 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 Python
keras处理欠拟合和过拟合的实例讲解
May 25 Python
Python类成员继承重写的实现
Sep 16 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添加MySQL数据记录代码
2008/06/07 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
Python线程详解
2015/06/24 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
Champion官网:美国冠军运动服装
2017/01/25 全球购物
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
暑期社会实践感言
2014/02/25 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
学校宣传标语
2014/06/18 职场文书
如何写早恋检讨书
2014/09/10 职场文书
工作服管理制度范本
2015/08/06 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python
用JS创建一个录屏功能
2021/11/11 Javascript
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫