狠狠撸
Submit Search
Python generators
?
0 likes
?
597 views
Yao Zuo
Follow
讲述笔测迟丑辞苍生成器的知识
Read less
Read more
1 of 17
Download now
Downloaded 11 times
More Related Content
Python generators
1.
Python Generators by laike9m laike9m@gmail.com https://github.com/laike9m
2.
You don’t know
what you don’t know 听说过,但不理解 >> 没听说过
6.
>>> def gen_ab(): ... print('starting...') ... yield
'A' ... print('here comes B:') ... yield 'B' ... print('the end.') g = gen_ab(), 停在这里 第一次调用next(), 停在这里 第二次调用next(), 停在这里 生成器函数可以看成一串事件,yield暂停执行,next恢复执行 “yield 是 具有 暂停功能 的 return”
7.
斐波那契数列: 0,1,1,2,3,5,8,11,19,... 前两个数是0,1,后一个数是前两个数之和 斐波那契数列生成器
8.
for 循环 每次都会调用next() 更深入的讨论:interator(迭代器) 每次都把返回的a输出 注意yield是“具有暂停功能的return” return a
( = yield a ) fib_number = a 然后打印出来
9.
? 循环就是一个事件流,只不过里面 包含了一些条件判断 def fib(max): a,
b = 0, 1 while a < max: yield a a, b = b, a+b 等价于 def fib(max): a, b = 0, 1 if a < max: yield a a, b = b, a+b if a < max: yield a a, b = b, a+b if a < max: yield a a, b = b, a+b ...
10.
? 一起写一个斐波那契生成器 ? enumerate
函数
11.
list() : 调用next()直到不能调用为止,并且把返回值存入列表,实质就是列表解析 [i
for i in enumerate(seasons)]
13.
g.next()是Python2.X 的写法,对应 Python3.X中的next(g)
14.
? 有yield的函数:生成器函数 ? yied是带暂停功能的return ?
for, list 本质上是在调用next(obj) ? 把生成器函数看成事件流,yield暂停,next继续执行 ? 生成器函数内部通常包含循环,循环也是事件流 ? 把列表解析的中括号换成小括号就是生成器表达式
15.
?快 ? 内存占用小 需要的时候才会产生 ? 语义上的含义 一次性使用 ?
保存函数的当前执行环境,包括所有局部变量等
16.
http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained
17.
Q&A
Download