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)

 

 

 

目录
相关文章
|
1月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
1月前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
3月前
|
数据采集 机器学习/深度学习 搜索推荐
Python自动化:关键词密度分析与搜索引擎优化
Python自动化:关键词密度分析与搜索引擎优化
|
5月前
|
存储 Python
Python中的yield到底是个什么鬼?
Python中的yield到底是个什么鬼?
57 2
Python中的yield到底是个什么鬼?
|
5月前
|
存储 Python
【Python 3】什么时候使用yield而不是return?
本文讨论了Python中`yield`与`return`的使用场景,解释了`yield`在生成器中的应用,允许函数逐步产生值而不必一次性计算并返回整个序列,适合于节省内存的懒加载场景。
55 2
|
6月前
|
存储 大数据 Python
Python中的yield关键字是什么?
`yield`是Python的关键字,用于创建生成器,实现懒惰计算。生成器函数在遇到`yield`时暂停并返回值,状态得以保留,下次迭代时从中断点继续。生成器是迭代器的一种,常用于处理大数据集或无限序列,避免一次性加载所有数据。例如,`simple_generator`函数通过`yield`逐次返回1, 2, 3。生成器函数如`fibonacci_generator`可用于生成斐波那契数列,而生成器表达式则提供了一种简洁的生成值方式,如`(x**2 for x in range(1, 6))`生成平方数。`yield`还可用于创建无限序列、过滤值(如只生成偶数)和实现懒惰计算
114 2
|
7月前
|
Shell Python
Python教程:return和yield的区别
Python教程:return和yield的区别
80 0
Python教程:return和yield的区别
|
JSON API 数据格式
使用Python获取快手关键词搜索api
使用Python获取快手关键词搜索api
|
7月前
|
Python
Python yield与实现教程分享
Python yield与实现教程分享
41 0
|
7月前
|
Python 微服务
python yield generator 详细讲解
python yield generator 详细讲解
46 0