Olezhka
Потому что ты сам же ее и создаешь! )) “new = ”
Когда запускается операция присваивания и имя new привязывается, там уже всё создано.
Вот пример без присваивания
>>> s = 'abc'
>>> s.replace('a', 'x')
'xbc'
>>> s
'abc'
>>>
Строка с символами (подстроками) xbc создалась, вывелась и исчезла из памяти. А привязываем мы к ней какое-то имя или нет - неважно.
Olezhka
А метод “.append()” возвращает дырку от бублика , но при этом меняет ИСХОДНЫЙ список.
Это разные структуры данных. С чего они должны быть одинаковыми? Строка, например, не может хранить любые объекты, только строки может хранить (подстроки), а список может хранить любые объекты - строки, списки, функции и так далее.
Пример
>>> lst = ['a', 1, {'name': 'value'}, [1, 2, 3], lambda x: x * 2]
>>> lst[-1](4)
8
>>> lst
['a', 1, {'name': 'value'}, [1, 2, 3], <function <lambda> at 0x7f3609508ea0>]
>>>
Список можно пополнять и дальше, а можно и удалять из него. Это специальная структура данных, созданная как раз для этого.
А строки здесь при чём? Да правильно, они тут вообще ни при чём. Это другая структура данных вообще, поддерживающая юникод там и тому подобное.
Olezhka
Записал это себе в золотую рамочку как памятку!
Зачем? Это уже всё записано в документации к питону.
https://docs.python.org/3/https://docs.python.org/3/library/index.htmlhttps://docs.python.org/3/library/stdtypes.html#text-sequence-type-strhttps://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-rangeТы прямо как ребёнок, который прибегает и орёт “папа! папа! я нашёл букву! смотри! буква я - это буква я! вот в газете я нашёл её!”, потом опять прибегает и снова орёт “папа! папа! я нашёл букву! смотри! буква ж - это буква жэ! вот на двери нашёл её!” и так постоянно. А папа смотрит на это и говорит “сын, ты букварь возьми, вот там валяется где-то и там их ищи, они там все есть, да ещё и с картинками, А - аист, Л - лягушка, Ю - юла, а лучше возьми учебник по тригонометрии, он тебе всё равно понадобится, но синусов и косинусов ты на дверях или в газетах не найдёшь”.
Olezhka
Вот только курьез какой-то выходит… Я, конечно, сейчас просто к словам придираюсь, но… Ты вот посмотри. Переменная… Само ее название говорит о том, что она МОЖЕТ меняться, в отличие от константы!.. Она изменчива!
Так имя привязывается к адресу объекта, а адрес меняется. У каждой строки свой адрес.
Пример
string = 'a'
string = 'b'
string = string + 'c'
Выглядит, как переменная. Вот если бы ты присвоить туда больше не мог после первого раза, то это была бы константа. В других языках так и бывает обычно. Если константой что-то объявил, то повторно туда присвоить не можешь.
Olezhka
так я выяснил еще, что “IntVar()”, оказывается, по умолчанию является глобальной переменной. Или это не переменная глобальная, а методы “.get()” и “.set()” такие крутые, что могут изнутри тела функции любую переменную извне достать?
Это объект такой же, как список. А метод set() - это такой же метод, как у списка метод append(). Поэтому её не надо видеть глобально, достаточно её просто где-то видеть и задействовать её метод, который
внутри неё и сохранит всё
её же методом.
Olezhka
А еще я где-то читал, что без инструкции “root.mainloop()” окно не отобразится
А на нажатие кнопок на клавиатуре оно будет реагировать? Привяжи кнопку клавиатуры к окну и запусти с главным циклом и без главного цикла.