python yield关键词使用总结

Posted shouke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python yield关键词使用总结相关的知识,希望对你有一定的参考价值。

python yield关键词使用总结

by:授客 QQ1033553122

测试环境

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 yield关键词使用总结的主要内容,如果未能解决你的问题,请参考以下文章

写了那么久的Python,你应该学会使用yield关键字了

python yield 关键字

Python中`yield`关键字详解

Python:lambda表达式和yield关键字理解与使用讲解

python学习第四十四天斐波那契数列和yield关键词使用

python的关键字yield有啥作用