python yield关键词案例测试

yipeiwu_com6年前Python基础

测试环境

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实现冒泡排序的简单应用示例

Python实现冒泡排序的简单应用示例

本文实例讲述了Python实现冒泡排序的简单应用。分享给大家供大家参考,具体如下: 冒泡排序的主要思想是换位,例如在满足某种条件下将i和j调换: if i>j: p = i...

Python中模块与包有相同名字的处理方法

前言 在编程开发中,个人觉得,只要按照规范去做,很少会出问题。刚开始学习一门技术时,的确会遇到很多的坑。踩的坑多了,这是好事,会学到更多东西,也会越来越觉得按照规范做的重要性,规范的制定...

python解决Fedora解压zip时中文乱码的方法

前言 很多时候在windows下压缩文件没问题,但是到了Linux下,出现乱码,很常见。以前在Ubuntu下,用`unzip -O GBK filename.zip` 就可以搞定。 换了...

python使用opencv驱动摄像头的方法

如下所示: #coding:utf-8 import cv2 import sys from PIL import Image def CatchUsbVideo(win...

Python实现批量把SVG格式转成png、pdf格式的代码分享

需要提前安装cairosvg模块,下载地址http://cairosvg.org/download/ Code: #! encoding:UTF-8 import cairosvg...