As a tranditional language programmer like me, the result is really weird.

Here is the test codes in file test1.py:
--------
def outerf():
    counter = 55
    def innerf():
        print(counter)
        #counter += 1
    return innerf

myf = outerf()
--------

the result is:
--------
>>> import test1
>>> test1.myf()
55
>>>
--------

that's OK. But if I un-comment the line "counter += 1", then it gives me this:
--------
>>> import test1
>>> test1.myf()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Work\Python34\test1.py", line 41, in innerf
    print(counter)
UnboundLocalError: local variable 'counter' referenced before assignment
>>> 
--------

In the first situation, the local variable 'counter' can be referenced 
correctly. But in the second, why a statement added after the print() statement 
can makes this variable "disappear", even the print() won't do the right thing. 
Isn't it wired? please help!
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to