day13_1_2迭代器生成器笔记

# 迭代器  迭代器协议 ----- 内部含有__next__和__iter__方法的就是迭代器(同时含有)

# 循环取值 for
# list dic str set tuple f = open() range enumerate (枚举)
# print(dir([])) # 告诉我列表拥有的所有方法
# 双下方法
# 只要是能被for循环的数据类型 就一定有__iter__方法

# 一个列表执行了__iter__之后的返回值就是一个迭代器 [].__iter__()
# l = [1, 2, 3]
# Iterable 可迭代的 __iter__ 只要含有__iter__方法的都是可迭代的
# [].__iter__()迭代器 __next__ 通过next就可以从迭代器中一个一个的取值
# 只要含有__iter__方法的都是可迭代的 -------可迭代协议
# 迭代器协议 ----- 内部含有__next__和__iter__方法的就是迭代器(同时含有)

# 迭代器协议和可迭代协议
# 可以被for循环的都是可迭代的
# 可迭代的内部都有__iter_-方法
# 只要是迭代器一定可迭代
# 可迭代的.__iter__()方法就可以得到一个迭代器
# 迭代器中__next__()方法可以一个一个的获取值
# 迭代器的好处:
# 从容器类型中一个一个取值,会把所有的值都取到
# 节省内存空间
# 迭代器并不会在内存中再占用一大块内存
# 而是随着循环,每次生成一个
# 每次next每次给我们一个

# 生成器 ----迭代器
# 生成器函数 —— 本质上就是我们自己写的函数
# 本质上就是我们自己写的函数

# 只要含有yield关键字的函数都是生成器函数,
# yield和return不能共用,且需要卸载函数内
# def generator():
# print(1)
# yield "a"
# # 生成器函数:执行之后会得到一个生成器作为返回值
# ret = generator()
# print(ret)
# print(ret.__next__())



# 生成器表达式

猜你喜欢

转载自www.cnblogs.com/edison-chen/p/9435011.html
今日推荐