On 2013-07-07, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: > On Fri, 05 Jul 2013 13:24:43 +0000, Neil Cerutti wrote: > >> for x in range(4): >> print(x) >> print(x) # Vader NOoooooOOOOOO!!! > > That loops do *not* introduce a new scope is a feature, not a bug. It is > *really* useful to be able to use the value of x after the loop has > finished.
I don't buy necessarily buy that it's "*really*" useful but I do like introducing new names in (not really the scope of) if/elif/else and for statement blocks. z = record["Zip"] if int(z) > 99999: zip_code = z[:-4].rjust(5, "0") zip4 = z[-4:] else: zip_code = z.rjust(5, "0") zip4 = "" As opposed to: zip_code = None zip4 = None z = record["Zip"] if int(z) > 99999: zip_code = z[:-4].rjust(5, "0") zip4 = z[-4:] else: zip_code = z.rjust(5, "0") zip4 = "" -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list