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统计字符串中指定字符出现次数的方法
Apr 04 Python
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
Python使用filetype精确判断文件类型
Jul 02 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
python @property的用法及含义全面解析
Feb 01 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
基于Python脚本实现邮件报警功能
May 20 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 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数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
php里array_work用法实例分析
2015/07/13 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
popdiv
2006/07/14 Javascript
javascript 三种编解码方式
2010/02/01 Javascript
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
pytorch构建多模型实例
2020/01/15 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
大学生年度自我鉴定
2013/10/31 职场文书
小孩百日宴答谢词
2014/01/15 职场文书
称象教学反思
2014/02/03 职场文书
《石榴》教学反思
2014/03/02 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
python之基数排序的实现
2021/07/26 Python
Python中异常处理用法
2021/11/27 Python