def prefixes(s):
if s:
yield from prefixes(s[:-1])
yield s
t = prefixes('both')
next(t)
下一个(t)返回'b'。我只是对为什么会这样感到困惑,因为如果我们遵循yield from
声明,我们最终yield from prefixes('')
会以返回 None 结束。在我的所有其他测试中,从 None 产生的结果会引发 TypeError。相反,这似乎只是被忽略了,并且 prefixes('b') 移动到下一个 yield 语句(?为什么这样做?)以产生 'b'...关于为什么的任何想法?将不胜感激解释。