LINUX.ORG.RU

Присвоение значения переменных друг другу в Питоне.


0

1

Хочу прояснить для себя вкратце основные вещи на тему переменных в питоне. Как я понимаю, о переменных в питоне лучше думать как об указателях на какие-то объекты в памяти. Например

s = 'hello world'
x = s

Будут в реальности как-бы указателями на константную строку (в терминах языка Си), а не содержать копии этой строки (подобно std::string).

Точно также, если я написал

f = open('123.txt')
data = f.read()
f.close()
data2 = data
data3 = data

data, data2, data3 будут «указателями» на один кусок в памяти, находящийся в собственности у уборщика мусора, а не содержать каждая по копии данных? Поэтому пока я не делаю deepcopy, любые присвоения - это «работа с указателями» без потери производительности на копирование данных?

Спасибо.

data, data2, data3 будут «указателями» на один кусок в памяти. Только не кусок, а место или область.

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)

Но память будет скопирована при попытке изменить один из этих «указателей»

Вообще почитай про mutable и immutable types в Питоне, многое прояснится

redbaron ★★
()
Ответ на: комментарий от redixin

У меня в топике речь одёт о любых объектах )

kiverattes ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.