I'm trying to define a function that prints fields of given widths with specified alignments; to do so, I wrote some helper functions nested inside of the print function itself. I'm getting an UnboundLocalError, and after reading the Naming and binding section in the Python docs, I don't see why.
Here's the error: >>> fieldprint([5, 4], 'rl', ['Ae', 'Lau']) Traceback (most recent call last): File "<stdin>", line 1, in ? File "fieldprint.py", line 35, in fieldprint str += cutbits() File "fieldprint.py", line 11, in cutbits for i in range(0, len(fields)): UnboundLocalError: local variable 'fields' referenced before assignment This is the code: def fieldprint(widths,align,fields): def measure(): totallen = 0 for i in range(0, len(fields)): totallen += len(fields[i]) return totallen def cutbits(): cutbit = [] for i in range(0, len(fields)): if len(fields[i]) >= widths[i]: cutbit.append(fields[i][:widths[i]]) fields = fields[widths[i]:] elif len(fields[i]) > 0: leftover = widths[i] - len(fields[i]) if align[i] == 'r': cutbit.append(' '*leftover + fields[i]) elif align[i] == 'l': cutbit.append(fields[i] + ' '*leftover) else: raise 'Unsupported alignment option' fields[i] = '' else: cutbit.append(' '*widths[i]) return cutbit.join('') if len(widths) != len(fields) or len(widths)!=len(align) or len(align)!=len(fields): raise 'Argument mismatch' str = '' while measure()!=0: str += cutbits() What's causing the error? Thanks, Alex -- ChapterZero: http://tangentspace.net/cz/ -- http://mail.python.org/mailman/listinfo/python-list