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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
python 默认参数问题的陷阱
Feb 29 Python
微信跳一跳自动运行python脚本
Jan 08 Python
Python基础学习之函数方法实例详解
Jun 18 Python
详解python编译器和解释器的区别
Jun 24 Python
python调用其他文件函数或类的示例
Jul 16 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
Python小程序 控制鼠标循环点击代码实例
Oct 08 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
快速查找Python安装路径方法
Feb 06 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
PyQt5 控件字体样式等设置的实现
May 13 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/05/21 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP count()函数讲解
2019/02/03 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
JavaScript数组去重的几种方法
2019/04/07 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现Linux下守护进程的编写方法
2014/08/22 Python
利用python实现AR教程
2019/11/20 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
新员工试用期自我评价
2015/03/10 职场文书
民主生活会意见
2015/06/05 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL