生成器函数的进阶
send的效果与作用范围和next一模一样
send获取下一个值的效果和next基本一致
第一次不能用send
函数中的最后一个yield不能接收新的值
只是再获取下一个值的时候,给上一个yield的位置传递一个数据
使用send的注意事项
#第一次使用生成器的时候,是用next获取下一个值
#最后一个yield不能接收外部的值
def generator(): print(123) content = yield 1 print(‘=======‘,content) print(456) arg = yield 2 ‘‘‘‘‘‘ yield # g1 = generator() # g2 = generator() # g1.__next__() # g2.__next__() # print(‘********‘,generator().__next__()) # print(‘********‘,generator().__next__()) g = generator() ret = g.__next__() print(‘***‘,ret) ret = g.send(‘hello‘) print(‘***‘,ret)
各种推导式
egg_list=[‘鸡蛋%d‘%i for i in range(10)] print(egg_list)
g = (i for i in range(10)) print(g) #生成器的内存地址 for i in g: print(i) #与列表生成器的区别:括号不一样,返回的值=======几乎不占内存
各种推导式
[满足条件的元素相关的操作 for 元素 in 可迭代的数据类型 if 元素相关的条件]
生成器注意
1》生成器中的数据只能取一次,取完就没了。
2》惰性运算。
原文地址:https://www.cnblogs.com/qinghuani/p/8184240.html
时间: 2024-10-09 10:00:20