首页 > 编程语言 > 详细

python yield关键词使用总结

时间:2019-10-15 14:06:23      阅读:76      评论:0      收藏:0      [点我收藏+]

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关键词使用总结

原文:https://www.cnblogs.com/shouke/p/11676978.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!