@flub because in python, iterators have a horrible design.
I'm convinced it's mostly caused by how blocks are defined in whitespace. (This is also a practical reason why whitespace as block definitions, sucks).
And partially because in python, lambdas, procs and closures are an afterthought, retrofitted , poorly (probably due to the whitespace thing).
And lastly, because in python scoping is a hot mess (slightly better than Ruby's or JS's, but still bad).