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实现的udp协议Server和Client代码实例
Jun 04 Python
python写xml文件的操作实例
Oct 05 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
python去掉空白行的多种实现代码
Mar 19 Python
Python实现修改IE注册表功能示例
May 10 Python
python3实现域名查询和whois查询功能
Jun 21 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
详解Python绘图Turtle库
Oct 12 Python
Django用户认证系统如何实现自定义
Nov 12 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 Python
Python爬取网站图片并保存的实现示例
Feb 26 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 session 检测和注销
2009/03/16 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
ExtJs的Date格式字符代码
2010/12/30 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
windows下numpy下载与安装图文教程
2019/04/02 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
python3中编码获取网页的实例方法
2020/11/16 Python
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
教师找工作推荐信
2013/11/23 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
名人传读书笔记
2015/06/26 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
golang特有程序结构入门教程
2021/06/02 Python