欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python yield关键词使用总结

程序员文章站 2023-12-29 15:08:34
python yield关键词使用总结 by:授客 QQ:1033553122 测试环境 win10 python 3.5 yield功能简介 简单来说,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 ge ......

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)

 

 

 

 

上一篇:

下一篇: