On Fri, Apr 16, 2010 at 5:20 PM, Steven D'Aprano <st...@remove-this-cybersource.com.au> wrote: > On Fri, 16 Apr 2010 08:48:03 -0700, Aahz wrote: >> In article <4bb92850$0$8827$c3e8...@news.astraweb.com>, Steven D'Aprano >> <st...@remove-this-cybersource.com.au> wrote: >>>Nevertheless, it is a common intuition that the list comp variable >>>should *not* be exposed outside of the list comp, and that the for-loop >>>variable should. Perhaps it makes no sense, but it is very common -- >>>I've never heard of anyone being surprised that the for-loop variable is >>>exposed, but I've seen many people surprised by the fact that list-comps >>>do expose their loop variable. >> >> I've definitely seen people surprised by the for-loop behavior. > > What programming languages were they used to (if any)? > > I don't know of any language that creates a new scope for loop variables, > but perhaps that's just my ignorance...
Well, technically it's the idiomatic placement of the loop variable declaration rather than the loop construct itself, but: //Written in Java //Can trivially be changed to C99 or C++ for (int i = 0; i < array.length; i++) { // code } // variable 'i' no longer accessible //Using a for-each loop specific to Java for (ItemType item : array) { // code } // variable 'item' no longer accessible Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list