生成器函数的进阶和表达式and各种推导式

生成器函数的进阶

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