# generator class 的 send 方法
def my_generator():
send_value = "hi"
while True:
receive = yield send_value
if receive == 'fuck you':
break
elif receive == None:
send_value = 'fuck you too'
else:
send_value = str(receive) + '\n' + 'yeah, fuck you too'
g = my_generator()
print(next(g))
print(g.send('hi yaya'))
print(g.send('merry christmas'))
# generator class 的 throw 方法
# 指定 throw 错误
def my_another_generator():
send_value = 'hi'
while True:
try:
yield send_value
yield 'I hate my life'
yield 'me too'
yield 'fancy that!'
except TypeError:
print('Avada Kadvra!')
except ValueError:
break
g2 = my_another_generator()
print(next(g2))
print(g2.throw(TypeError)) # so... 执行except同时 生成一个数值
print(next(g2))
print(g2.throw(TypeError)) # 由此可以看出,在throw 出TypeError的同时,try的内容不会执行,而 重新 进入while循环,因此输出'hi'
# 为制定 throw 错误
def my_final_generator():
n = 1
yield n
while n <= 10:
yield n
n += 1
g3 = my_final_generator()
print(next(g3))
print(next(g3))
print(g3.throw(TypeError))
print(next(g3)) # 此时会抛出StopIteration,生成器停止
generator 高阶
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 前言 在swift中,对诸如Array, Dictionary集合类型使用map, filter, reduce进...
- 好像刚刚开始,15天的刻意训练就这么过去了,看到结营回顾的信息,没有慌乱,没有迷茫,因为知道自己都做了什么,知道自...