python yield关键词案例测试

作者:授客 时间:2021-02-07 03:14:07 

测试环境

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)

来源:https://www.cnblogs.com/shouke/p/11676978.html

标签:python,yield,关键词
0
投稿

猜你喜欢

  • 网站有效设计的10个原则

    2008-02-11 17:12:00
  • laravel实现简单用户权限的示例代码

    2023-11-14 11:58:29
  • SQL Server数据库管理常用SQL和T-SQL语句

    2009-05-07 14:01:00
  • python中map、any、all函数用法分析

    2021-09-02 15:25:45
  • ubuntu环境下python虚拟环境的安装过程

    2022-07-25 06:09:07
  • Python使用5行代码批量做小姐姐的素描图

    2023-09-27 09:53:04
  • python pands实现execl转csv 并修改csv指定列的方法

    2022-11-20 01:45:27
  • Python3爬取英雄联盟英雄皮肤大图实例代码

    2022-05-20 23:40:55
  • js获取上传文件大小示例代码

    2024-04-22 22:35:02
  • PHP取整函数:ceil,floor,round,intval的区别详细解析

    2023-11-17 18:30:33
  • python制作简单五子棋游戏

    2021-09-13 06:49:47
  • OpenCV学习之图像加噪与滤波的实现详解

    2022-09-20 04:40:57
  • javascript浮点数计算的bug

    2009-12-06 11:43:00
  • Python合并字符串的3种方法

    2021-08-13 00:33:33
  • MySQL InnoDB ReplicaSet(副本集)简单介绍

    2024-01-20 11:10:45
  • vue中 $forceUpdate的使用解析

    2024-06-05 09:15:18
  • mysql查找删除表中重复数据方法总结

    2024-01-19 01:53:49
  • Sql server中的char、varchar、text和nchar、nvarchar、ntext的区别

    2011-08-14 09:43:44
  • python多线程超详细详解

    2023-08-09 09:10:23
  • sql server 2008 压缩备份数据库(20g)

    2024-01-15 09:23:41
  • asp之家 网络编程 m.aspxhome.com