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中的包和模块实例
Nov 22 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
python处理数据,存进hive表的方法
Jul 04 Python
python 实现A*算法的示例代码
Aug 13 Python
Python中的元组介绍
Jan 28 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 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
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
php页面缓存方法小结
2015/01/10 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
python制作小说爬虫实录
2017/08/14 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
用Python逐行分析文件方法
2019/01/28 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
使用python绘制二维图形示例
2019/11/22 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
python中如何使用虚拟环境
2020/10/14 Python
Python调用飞书发送消息的示例
2020/11/10 Python
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
如何查找网页漏洞
2016/06/22 面试题
先进班级集体事迹材料
2014/01/30 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers