NevilleDNZ wrote: > Can anyone explain why "begin B: 123" prints, but 456 doesn't? > > $ /usr/bin/python2.3 x1x2.py > begin A: > Pre B: 123 456 > begin B: 123 > Traceback (most recent call last): > File "x1x2.py", line 13, in ? > A() > File "x1x2.py", line 11, in A > B() > File "x1x2.py", line 7, in B > print "begin B:",x1,x2 > UnboundLocalError: local variable 'x2' referenced before assignment > > > $ cat x1x2.py > #!/usr/bin/env python > def A(): > print "begin A:" > x1=123; > x2=456; > def B(): > print "begin B:",x1,x2 > x2 = x2 - 1; # comment out this line and script x1x2 magically > works!!
Hardly surprising. This statement is an assignment to x2, which therefore becomes local to the function. Since no previous value has been assigned to this local, the exception occurs. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list