generator-生成器

# _*_coding:utf-8_*_
# 作者:王佃元
# 日期:2019/12/29

# 生成器两种创建方式:1、列表生成式中括号改为小括号
# def f(n):
# return n**3
# a = [x for x in range(10)]
# a = [x*2 for x in range(10)]
# # 列表生成式
# a = [f(x) for x in range(10)]
# print(a, type(a))
# t = ('123', 8, 0)
# a, b, c = t # 赋值
# print(a, b, c)
# a = (x*2 for x in range(5))
# print(next(a)) # == a.__netx__() in py2
# for i in a: # 生成器就是一个可迭代对象,iterable
# print(i, type(i))
# def foo():
# print('OK')
# yield 1
# print('OK2')
# yield 2
# g = foo()
# # next(g)
# # next(g)
# for i in g:
# i
# 可迭代对象:对象拥有iter方法的就是可迭代对象

# def fib(max):
# n, before, after = 0, 0, 1
# while n < max:
# # print(after)
# yield before
# before, after = after, before + after
# n = n + 1
# g = fib(8)
# print(next(g))
# print(next(g))
# print(next(g))

def bar():
print('OK1')
count = yield 1
print(count)
print('OK2')
yield 2
b = bar()
b.send(None) # 第一次send前如果没有next,只能传一个‘None’参数。如果之前有next则可以直接传参数
ret = b.send('hello')
print(ret)

posted on 2019-12-29 22:00  derywong  阅读(154)  评论(0)    收藏  举报