prog1.py:
def runf(f):
f()
def main():
l = [0]
def f():
l.append(1)
runf(f)
print(l)
main()
Дает мне (как и ожидалось):
[0, 1]
prog2.py:
def runf(f):
f()
def main():
l = [0]
def f():
l += [1] # <-- Only difference
runf(f)
print(l)
main()
Дает мне:
Traceback (most recent call last):
File "prog2.py", line 11, in <module>
main()
File "prog2.py", line 8, in main
runf(f)
File "prog2.py", line 2, in runf
f()
File "prog2.py", line 7, in f
l += [1]
UnboundLocalError: local variable 'l' referenced before assignment
Может кто-нибудь объяснить мне, что здесь происходит?
Примечание: это происходит как в python2, так и в python3.
Также я открыт для предложений поЛучшее название для этого вопроса.