当前位置:
首页 > temp > 简明python教程 >
-
python基础-生成器
生成器
-
概念:但凡在函数内部定义了一个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
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数