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处理xml文件的方法小结
May 02 Python
Numpy数组转置的两种实现方法
Apr 17 Python
python高级特性和高阶函数及使用详解
Oct 17 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
Python+Redis实现布隆过滤器
Dec 08 Python
Django app配置多个数据库代码实例
Dec 17 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
python数据分析:关键字提取方式
Feb 24 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 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三元运算的2种写法代码实例
2014/05/12 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
jQuery列表拖动排列具体实现
2013/11/04 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
JS实现轮播图效果
2020/01/11 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Python socket处理client连接过程解析
2020/03/18 Python
美国宠物商店:Wag.com
2016/10/25 全球购物
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
文员个人求职自荐信
2013/09/21 职场文书
会计系毕业个人自荐信格式
2013/09/23 职场文书
高中生学习的自我评价
2013/12/14 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
二年级评语大全
2014/04/23 职场文书
离婚协议书范本样本
2014/08/19 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
岁月神偷观后感
2015/06/11 职场文书
教师教育心得体会
2016/01/19 职场文书
教学反思怎么写
2016/02/24 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python