【 在 JulyClyde 的大作中提到: 】
: 可以写的简单一些而已
: generator不是iteratable吗?print之类的函数不能直接对着它一个字一个字往外读吗?
: 还是我理解错了?
生成器函数的调用不是这么用的, 第一次其实只是返回了生成器对象, 对生成器对象的调用需要
调用它的send函数。
gen = escapeMarkdown('ax..y==3') #这个只是返回生成器。
gen.send(None) 这样写才是驱动生成器的调用。
想一直调用, 就一直调用send,其中, 参数这里是None就可以。
这个参数的作用, 用于下面的格式:
var = yield "\\" + c
也就是说, yield左侧可以给一个变量赋值, 这个值其实,就是send的参数带过来的。
由于第一次调用, 是从函数开头, 到碰到第一个yield, 这个时候不需要这个值,
因此规定第一次给的参数值是None,
第二次调用, 假设send(var2), 那么相当于yield携带var2回来, 执行var=var2
然后, 继续向下执行, 知道再次碰到 yield, 对yield右侧求值并返回。
针对你的这种情况, yield不存在左侧赋值, 因此, 全部使用None调用就可以了,
其实, 无论用什么值, 可能都是被忽略丢掉了,None就是明确说不需要左值。
--
FROM 115.171.154.*