IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python中yield和return使用方式的区别 -> 正文阅读

[Python知识库]python中yield和return使用方式的区别

在这里插入图片描述

在python的函数中常会用到return,有时候也会用到yield,它们都是用来返回函数运行返回的某些结果的,本文通过简单的几个例子展示一下两者的区别。

文章目录


return

return最为常见,十分简单,其返回运行一次函数所得到的结果,且在return语句之后python解释器会直接跳出函数,函数剩下的其它所有语句或者循环都不再被运行。

比如下例:

def return_exam():
    l = []
    for i in range(5):
        l.append(i)
    return l # 返回的是整个列表
    print("执行结束")  # 这一句不会执行

yield

使用yield与return的区别就在于yield是返回一个生成器(generator)对象。python中的生成器,可以使用next()来逐个获取yield返回的值。同时运行机制为在运行包含有生成器的函数的时候,只要碰到yield就暂停,这时候会保存当前运行的信息,也就是之前所产生的变量等都不会改变。

例:

def yield_exam():
    for i in range(5):
        yield i
        print('i的值', i)

a = yield_exam() # 这里产生一个生成器对象并命名为a
next(a) # 这里可以多次运行,直到报错信息stop iteration出现为止

这里运行所有的结果为:

>>> a = yield_exam()
>>> next(a)
0
>>> next(a)
i的值: 0
1
>>> next(a)
i的值: 1
2
>>> next(a)
i的值: 2
3
>>> next(a)
i的值: 3
4
>>> next(a)
i的值: 4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

观察结果可知,在运行到yield处时,函数暂停运行,使用下一个next后再次开始正常运行,直到遇到下一个yield。

除了这种for循环产生的生成器,实际上也可以自己写多个yield语句,这样和上面运行的效果是一样的,例如下面的例子:

def multi_yield():
    yield 0
    yield 1
    yield 2
    yield 3
b = multi_yield()

同样可以使用多个next()获取生成器的结果,这里就不展示结果了。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:18:30  更:2021-08-05 17:20:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 7:08:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码