python yield关键词使用总结

简介: python yield关键词使用总结

python yield关键词使用总结


测试环境

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)

 

 

 

目录
相关文章
|
24天前
|
数据采集 机器学习/深度学习 搜索推荐
Python自动化:关键词密度分析与搜索引擎优化
Python自动化:关键词密度分析与搜索引擎优化
|
3月前
|
存储 Python
Python中的yield到底是个什么鬼?
Python中的yield到底是个什么鬼?
Python中的yield到底是个什么鬼?
|
3月前
|
存储 Python
【Python 3】什么时候使用yield而不是return?
本文讨论了Python中`yield`与`return`的使用场景,解释了`yield`在生成器中的应用,允许函数逐步产生值而不必一次性计算并返回整个序列,适合于节省内存的懒加载场景。
41 2
|
4月前
|
存储 大数据 Python
Python中的yield关键字是什么?
`yield`是Python的关键字,用于创建生成器,实现懒惰计算。生成器函数在遇到`yield`时暂停并返回值,状态得以保留,下次迭代时从中断点继续。生成器是迭代器的一种,常用于处理大数据集或无限序列,避免一次性加载所有数据。例如,`simple_generator`函数通过`yield`逐次返回1, 2, 3。生成器函数如`fibonacci_generator`可用于生成斐波那契数列,而生成器表达式则提供了一种简洁的生成值方式,如`(x**2 for x in range(1, 6))`生成平方数。`yield`还可用于创建无限序列、过滤值(如只生成偶数)和实现懒惰计算
|
5月前
|
Shell Python
Python教程:return和yield的区别
Python教程:return和yield的区别
68 0
Python教程:return和yield的区别
|
5月前
|
Python
Python yield与实现教程分享
Python yield与实现教程分享
33 0
|
5月前
|
Python 微服务
python yield generator 详细讲解
python yield generator 详细讲解
34 0
|
6月前
|
开发工具 Python
Python中return和yield的区别,面试官不讲武德
Python中return和yield的区别,面试官不讲武德
|
JSON API 数据格式
使用Python获取快手关键词搜索api
使用Python获取快手关键词搜索api
|
6月前
|
Python
Python yield 关键字的作用?
Python yield 关键字的作用?
46 0