...: arr.append(1)
...: return arr
...:
In [16]: foo()
Out[16]: [1]
In [17]: foo()
Out[17]: [1, 1]
In [18]: foo()
Out[18]: [1, 1, 1]
In [19]: arr
-----------
NameError: name 'arr' is not defined
Ну это азы петона из области работы с памятью и интерпретации языка
Ну я понимаю, просто то что локальная переменная не очищается, меня смущает. Как нагуглить?
какое? области видимости переменных? внутренняя мутабельность значений по умолчанию?
Она у тебя создаётся в момент интерпретации и в дальнейшем берётся конкретный объект, а не создаётся новый
И это потому что оно в аргументах функции создается? In [24]: foo([1,2]) Out[24]: [1, 2, 1] In [25]: foo([1,2]) Out[25]: [1, 2, 1] In [20]: def bar(): ...: arr=[] ...: arr.append(1) ...: return arr ...: In [21]: bar() Out[21]: [1] In [22]: bar() Out[22]: [1]
Обсуждают сегодня