только ссылки на объекты, то почему для строк это не распространяется?
для массивов работает, а для строк, чисел нет...
Строки нельзя изменять
а можешь поподробнее? Из этого выражения я понимаю так, что вместо изменения строки происходи её копирование ?
Хз как с числами они просто есть . Типо вот если уже есть 7 то просто ссылка на нее а если нету то создаётся
хм.... тогда это тоже объясняет думаю такое поведение. Спасибо
mem += 1 -- это mem = mem + 1 Оно не меняет объект, оно перезаписывает переменную новым объектом
+= создаёт новый объект на основе старого
Ну, "нет переменных" - это тот ещё вброс, но в чём разница поведения строк и чисел, например? Скорее всего ты просто не понял, что делает +=.
Если бы у числа был метод, который мутирует внутреннее состояни этого числа, то тогда такое присваивание сработало бы Допустим, mem.add("1")
Почему вброс ?
с точки зрения логики, то это не переменная все же? ибо переменная на мой взгляд это самостоятельная сущность?
То что переменные работают несколько иначе, чем в каких-то других языках, не означает, что их нет.
Есть ли способ мутировать а не перезаписывать ?
Он не нужен Но можешь в низкоуровневое упороться
Сделать строку мутейбл?
Мутировать число? Ну, чёрной магией можно, но результат тебе не понравится.
Нет как и во всех яп кроме тех где есть поинтеры
Я думаю в каких случаях такое может быть полезним.
В случаях когда ты хочешь испортить людям жизнь. :-D
В тех в которых ты не пишешь на питоне а пишешь на расте или с++
Так а в чем проблема добавления макросов в питон
Э... А макросы тут как всплыли?
Ну jinja2 возьми, вот тебе макросы
https://peps.python.org/pep-0638/ https://github.com/lihaoyi/macropy Вот, развлекайся. Но я так и не придумал, где оно может быть более полезно, чем больно.
О как раз мои мысли
В начальной настройке проекта .
Обсуждают сегодня