# 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天的刻意训练就这么过去了,看到结营回顾的信息,没有慌乱,没有迷茫,因为知道自己都做了什么,知道自...