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正常时间和unix时间戳相互转换的方法
Apr 23 Python
用python爬取租房网站信息的代码
Dec 14 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
python3正则模块re的使用方法详解
Feb 11 Python
使用python从三个角度解决josephus问题的方法
Mar 27 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
pandas提升计算效率的一些方法汇总
May 30 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
js倒计时小程序
2013/11/05 Javascript
javascript判断office版本示例
2014/04/11 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python引用DLL文件的方法
2015/05/11 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
python中的yield from语法快速学习
2020/11/06 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
python复合条件下的字典排序
2020/12/18 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
烹调加工管理制度
2014/02/04 职场文书
数学教学随笔感言
2014/02/17 职场文书
行政专员的岗位职责
2014/03/10 职场文书
评先进个人材料
2014/12/29 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL
微信小程序调用python模型
2022/04/21 Python