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实现在windows服务中新建进程的方法
Jun 30 Python
Python实现简单多线程任务队列
Feb 27 Python
Python切片知识解析
Mar 06 Python
python妙用之编码的转换详解
Apr 21 Python
Python计算两个日期相差天数的方法示例
May 23 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
python cookie反爬处理的实现
Nov 01 Python
python 模拟登录B站的示例代码
Dec 15 Python
python中@contextmanager实例用法
Feb 07 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判断是否连接上网络的方法
2015/07/01 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
js tab 选项卡
2009/04/26 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
python获取图片颜色信息的方法
2015/03/18 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
年会活动策划方案
2014/01/23 职场文书
继承权公证书
2014/04/09 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
python实现剪贴板的操作
2021/07/01 Python
golang内置函数len的小技巧
2021/07/25 Golang
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
优化Mysql查询的示例
2022/04/26 MySQL