前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python yield关键词使用总结

python yield关键词使用总结

作者头像
授客
发布2019-10-15 17:49:32
4360
发布2019-10-15 17:49:32
举报

测试环境

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)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试环境
  • yield功能简介
  • 代码演示
    • 例子1: 输出斐波那契數列前 N 个数
      • 例子2:读二进制方式取文件并生成文件副本
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档