Amaury - I think it's generally cleaner code to write
    for myObject in someList:
       if myObject.fits():
           process(myObject)
           break
than
   for myObject in someList:
      if myObject.fits():
         break
   process(myObject)

I see from csv.py how it could simplify things (e.g. if the else case was
less trivial); however, for csv.py specifically, lines 372 to 392 could
prob. be rewritten as

# default to length of string
thisType = len(row[col])
for typeFunc in [int, float, complex]:
    try:
        typeFunc(row[col])
        thisType = typeFunc
        break
    except (ValueError, OverflowError):
        pass

if columnTypes[col] is None:
    # add new column type
    columnTypes[col] = thisType
elif thisType != columnTypes[col]:
    # type is inconsistent, remove column from consideration
    del columnTypes[col]

I'd be interested in seeing how often it is actually used.

I suppose carrying loop variable after the loop makes some sense in the
context of having only local and global scopes: clearly one wouldn't want to
make code inside the loop use "global" to access variables outside of the
loop. Creating a special scope for loop iteration variables would probably
also be a bad thing, though py3k currently prints a warning about concurrent
modification; perhaps this is not so different.

Guido - sorry I didn't know. Given how scopes work in python, I don't think
this is going to go anywhere, so at the moment I'm not going to repost /
revive arguments.

Thanks,
Nicholas
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to