python全栈开发 * 13知识点汇总 * 180619

Posted j-7-h-2-f-7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python全栈开发 * 13知识点汇总 * 180619相关的知识,希望对你有一定的参考价值。


13 迭代器和?成器
一.迭代器
1.以通过dir函数来查看类中定义好的所有?法
2.__iter__ 用来获取当前对象的迭代器
3.__next__ 获取可迭代对象的元素
s="我爱吃火锅"
ret=dir(s) # 查看字符串s中定义好的所有方法
print(ret)
it=s.__iter__() # 用来获取当前对象的迭代器
print(it.__next__()) # 获取可迭代对象的元素 第一个
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__()) # 最后一个元素后.继续__next__会报错 stop iteration

def func(): #一次把可迭代对象元素循环遍历出来
lst = []
for i in range(0, 10000):
lst.append("服装"+str(i))
return lst
print(func())

def func():
for i in range(0,10000):
yield "服装"+str(i)
gen=func()
for i in range(0,65): # 分批次按需求来拿元素
ret=gen.__next__()
print(ret)
二.生成器
1.什么是生成器 ?成器实质就是迭代器
2.在python中有三种?式来获取?成器:
(1)通过生成器函数
def func():
print((111))
yield "222"
gen=func() # 如果函数中有yield,则此函数为生成器函数
ret=gen.__next__() # 生成器实质是迭代器,可直接执行__next__()
print(ret)
(2)yield 和return 的区别.
# 程序中有yield ,函数是生成器函数,访问生成器函数,函数不会执行,返回一个生成器.
# 生成器执行__next__,执行到下一个yield.
# yield 和return 基本相同,只是yield只负责返回,不会结束函数
# return 结束函数
(3) 生成器的作用 : 节省内存
(4) send 和 yield 的区别:send 给上一个yield位置传递一个值进去.但是__next__不能. 不能给最后?个yield发送值
(5) send() 第一次必须用__next__ (因为上面没有yield了.
def func():
print("想吃饭了")
a=yield "想吃麻辣烫"
print("想吃"+a)
b=yield "还想吃什么"
print("想吃"+b)
c=yield "呷哺呷哺"
print(c)
gen=func()
ret=gen.__next__()
print(ret)
ret1=gen.send("麻辣小龙虾")
print(ret1)
ret2=gen.send("海底捞")
print(ret2)






























































以上是关于python全栈开发 * 13知识点汇总 * 180619的主要内容,如果未能解决你的问题,请参考以下文章

python全栈开发 * 10知识点汇总 * 180612

python全栈开发* 02 知识点汇总 * 180531

python全栈开发 * 22 知识点汇总 * 180703

python全栈开发 * 18 面向对象知识点汇总 * 180530

python全栈开发 * 23 面向对象 知识点汇总 * 180704

python全栈开发 * 30知识点汇总 * 180713