Вы не понимаете Python. Вы должны понимать переменные (почти все в python является в основном указателем) и пространства имен .
ОК, поэтому вы не понимаете, когда python создает новые объекты.
В 90% случаев каждый раз, когда вы видите объект, он будет новым.
Например:
a = [1,2,3]
b = a + [4,5]
print a
>>> [1,2,3]
См? b это новый объект, а нетронутый.
Также:
def func(a):
a = [1,2,3]+a
return a
a = [4,5]
print func(a)
>>> [1,2,3,4,5]
print a
>>> [4,5]
Почему это произошло? Внутри функции есть совершенно новое пространство имен (которое, вероятно, похоже на новый стек). Таким образом, новый a
внутри функции не имеет ничего общего со старым a
вне функции.
Действительно трудно заставить Python делиться данными, из-за чего одному разделу кода очень сложно связываться с переменными в другой области.
Вы можете изменять вещи, но вы должны прыгать через обручи:
def func(a):
a.append([4,5])
return a
a = [1,2,3]
print func(a)
>>> [1,2,3,4,5]
print a
>>> [1,2,3,4,5]
Видите, это сработало! Я изменил a
, потому что я использовал метод a, а не создавал новую переменную.