当前位置:
首页 > 编程开发 > Python基础教程 >
-
python基础教程之python基础-生成器
本站最新发布 Python从入门到精通|Python基础教程
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
生成器
-
概念:但凡在函数内部定义了一个yield,调用函数时,函数体代码不会执行,会返回一个结果,该结果就是生成器。本质上是迭代器,一个自定义的迭代器。
# python内获取迭代器的方式 def iter_func(): list1 = [1, 2, 3, 8, 4] # 获取一个迭代器 iter_list = list1.__iter__() while True: try: # 捕获异常 # 执行__next__取值 print(iter_list.__next__()) except StopIteration: break # 执行iter_func iter_func() # 自定义一个迭代器 def func(): print("hello world!") yield "dawn" res = func() # 直接调用,返回了一个生成器:<generator object func at 0x000002376172F1C8> print(res) # 如何获取生成器的内容呢? # 生成器的本质是迭代器,迭代器对象取值通过.__next__ # 通过__next__ 取值时,才会执行函数体代码。 print(res.__next__())
输出结果:
hello world! dawn
-
生成器如何实现:通过
yield
关键字实现。-
yield
只能在函数内部定义
-
每一次yield 都会往生成器传一个值。
-
可以保存函数的暂停状态
def yield_func(): print("自定义生成器开始……") print("第一个yield:") yield "yield--1" print("第二个yield:") yield "yield--2" print("第三个yield:") yield "yield--3" print("最后一个yield:") yield "yield--4" print("查看,是否还有yield") res = yield_func() print(res.__next__())
输出:
自定义生成器开始…… 第一个yield: yield--1
-
-
yield 和 return
- 相同点:返回值的个数无限制
- 不同点:return 有且只能返回一个值;yield 可返回多个值
# yield def yield_func(): list1 = [2, 3, 4, 1] dict1 = {"name": "dawn", "age": 18, "hobby": "read"} tuple1 = (1, 'a', 2, 'b') set1 = {23, 34, 'e'} yield list1 yield dict1 yield tuple1, set1 # return def return_func(): list1 = [2, 3, 4, 1] dict1 = {"name": "dawn", "age": 18, "hobby": "read"} tuple1 = (1, 'a', 2, 'b') set1 = {23, 34, 'e'} return list1,tuple1 #此处代码执行不到,函数代码题遇到return 以后就结束了 return dict1
-
使用yield 自定义一个range
""" python2:range(1,5) ---→ [1,2,3,4] python3:range(1,5) ---→ range对象 ---→ 生成器 ---→ 迭代器 range(start,stop,step) """ def my_range(start,end,step=1): while start < end: yield start start += move
栏目列表
最新更新
odoo10实现单点登陆绕过登陆集成页面
python基础-生成器
生成器
生成器以及面向过程编程
Django查询数据库返回字典dict数据
python基础(26):类的成员(字段、方法、属性
Django Rest Framework
Python进程池multiprocessing.Pool的用法
打包Python文件为exe
python发送邮件
.Net Standard(.Net Core)实现获取配置信息
Linux PXE + Kickstart 自动装机
Shell 编程 基础
Shell 编程 条件语句
CentOS8-网卡配置及详解
Linux中LVM逻辑卷管理
1.数码相框-相框框架分析(1)
Ubuntu armhf 版本国内源
Linux中raid磁盘阵列
搭建简易网站
mysql 安装了最新版本8.x版本后的报错:
Mysql空间数据&空间索引(spatial)
如何远程连接SQL Server数据库的图文教程
复制SqlServer数据库的方法
搜索sql语句
sql中返回参数的值
sql中生成查询的模糊匹配字符串
数据定义功能
数据操作功能
将Session值储存于SQL Server中