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实现登录接口的示例代码
Jul 21 Python
Python机器学习logistic回归代码解析
Jan 17 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
Python上下文管理器用法及实例解析
Nov 11 Python
python PIL/cv2/base64相互转换实例
Jan 09 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
详解pandas映射与数据转换
Jan 22 Python
python Protobuf定义消息类型知识点讲解
Mar 02 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
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Python中使用dom模块生成XML文件示例
2015/04/05 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
2014年社区重阳节活动策划方案
2014/09/16 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
战马观后感
2015/06/08 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript