Isn’t that what the OP is about, that you can’t do that in python?
@Skoffer I completely agree, it’s an awesome feature and I use it a lot too (for accumulating results and for tracking state in an iterative algorithm). But, on your example, you might want to have/introduce for instance a data variable in the outer function, and that would result in unexpected bugs. The v variable is “special” and it would make sense (and actually help code readability) to mark it as such. Typically this is the sort of things you want to put in comments anyway.
So, if I understand correctly, the pros are 1) clarity by explicitness 2) avoids bugs 3) remove a major source of performance unpredictability. The downsides are 1) it’s breaking 2) it uses up special-purpose syntax 3) it makes it very slightly harder to implement this kind of function (not that bad: you write the function, it raises an error, you add the keyword) 4) it makes foreach and for behave differently. Tradeoffs, always tradeoffs!