defaccumulate(iterable,func=operator.add):'Returnrunningtotals'#accumulate([1,2,3,4,5])-->1361015#accumulate([1,2,3,4,5],operator.mul)-->12624120it=iter(iterable)try:total=next(it)exceptStopIteration:returnyieldtotalforelementinit:total=func(total,element)yieldtotal这是Python文档关于itertools.accumulate函数的说明https://docs.python.org/zh-cn...在我的理解里(应该是错误的理解),total=next(it)总会取到第一个值,而永远不会抛出异常,谁能告诉会抛出这个异常的实例呢?请问在什么情况下,调用这个函数会抛出StopIteration异常呢,传入一个可迭代对象实参后,try:total=next(it),不是应该总是可以取到第一个元素吗,为什么需要exceptStopIteration呢,在什么情况下才会抛出这个异常呢?感谢回答,我明白next取不到下一个元素的时候就抛出StopIteration,但是这段代码运行后取一次next然后就会进入forelementinit:的这个循环中,并在这个循环结束时就结束这个函数.而不会再执行上面的next,那么怎么会抛出stopIteration呢?可以具个具体的实例吗就是说next在这段代码中是否只会执行一次呢,而执行一次的话,不是应该"总是"可以取到第一个元素而不会抛出异常吗?
尚方宝剑之说
相关分类