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脚本
Feb 10 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
Nov 11 Python
Python yield与实现方法代码分析
Feb 06 Python
Selenium定时刷新网页的实现代码
Oct 31 Python
NumPy 数组使用大全
Apr 25 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
python编写俄罗斯方块
Mar 13 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
Python基于execjs运行js过程解析
Nov 27 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 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导入Excel到MySQL的方法
2011/04/23 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
毕业实习个人鉴定范文
2013/12/10 职场文书
名人演讲稿范文
2013/12/28 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
英文感谢信格式
2015/01/21 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
Go语言grpc和protobuf
2022/04/13 Golang