@Ben_r007

Как работает запись переменных в память в Python?

Здравствуйте.
Я тут начал копать, как работают переменные в Python, и был поражен.
До сего дня я думал, что переменные в Python работают так же, как в компилируемых языках со статической типизацией.
Ан-нет!
>>> name = "John"
>>> hex(id(name))
'0x28632eb17b0'
>>> name = "Constantine"
>>> hex(id(name))
'0x28632eb3af0'
То есть, у нас не выделяется одна ячейка в памяти, а оно как-то расходится.
Позже я узнал, что через id мы получаем адрес уникального объекта. Является ли он адресом в ОЗУ?
Теперь я совершенно не пойму, как работают переменные в Python.
Пожалуйста, помогите разобраться!
Заранее благодарен.
  • Вопрос задан
  • 103 просмотра
Решения вопроса 3
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Нет, не является. Это адрес внутренний. Показывает расположение в одной из таблиц памяти питона

Читай тут
Ответ написан
Комментировать
@MEDIOFF
Python Developer
Вот вам прекрасное выступление на эту тему ссылка
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Если по аналогии, то любые переменные - это не более чем указатели на реальные объекты.
И этими реальными объектами рулит garbage collector питона.
Разница в том, что некоторые объекты изменяемые (точнее, объекты-ссылки), а некоторые нет (объекты-значения).
Объекты-значения копируются при попытке модификации:
a = 1
b = a
b += 2
print(a, b) #1 3

Объекты ссылки нет:
a = [1]
b = a
b += [2]
print(a, b) #[1, 2] [1, 2]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы