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数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
用matplotlib画等高线图详解
Dec 14 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
python3爬取各类天气信息
Feb 24 Python
python面试题Python2.x和Python3.x的区别
May 28 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
如何使用python把ppt转换成pdf
Jun 29 Python
Python实现最大子序和的方法示例
Jul 05 Python
Python列表list操作相关知识小结
Jan 29 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
python3.8.1+selenium实现登录滑块验证功能
May 22 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
3
2006/10/09 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
php函数连续调用实例分析
2015/07/30 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
降低PHP Redis内存占用
2017/03/23 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
php报错502badgateway解决方法
2019/10/11 PHP
使用js检测浏览器的实现代码
2013/05/14 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
Python实现视频下载功能
2017/03/14 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
应届大学生的推荐信
2013/11/20 职场文书
餐饮管理自我介绍信
2014/01/15 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
软件售后服务承诺书
2014/05/21 职场文书
银行求职信
2014/05/31 职场文书
国庆横幅标语
2014/10/08 职场文书
人事专员岗位职责
2015/02/03 职场文书
通知书大全
2015/04/27 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS