Может кто-нибудь объяснить это мне? Поэтому я играл с командой id() в python и наткнулся на это:
>>> id('cat')
5181152
>>> a = 'cat'
>>> b = 'cat'
>>> id(a)
5181152
>>> id(b)
5181152
Это имеет смысл для меня, за исключением одной части: строка "cat" имеет адрес в памяти, прежде чем я назначу ее переменной. Я, вероятно, просто не понимаю, как работает адресация памяти, но может кто-нибудь объяснить это мне или хотя бы сказать мне, что я должен прочитать адресацию памяти?
Итак, все хорошо и хорошо, но это меня смутило:
>>> a = a[0:2]+'t'
>>> a
'cat'
>>> id(a)
39964224
>>> id('cat')
5181152
Это показалось мне странным, потому что 'cat' - это строка с адресом 5181152, но новый a имеет другой адрес. Так что, если в памяти есть две строки 'cat', почему два адреса не печатаются для id ('cat')? Моя последняя мысль заключалась в том, что конкатенация имела какое-то отношение к изменению адреса, поэтому я пробовал это:
>>> id(b[0:2]+'t')
39921024
>>> b = b[0:2]+'t'
>>> b
'cat'
>>> id(b)
40000896
Я бы предсказал, что идентификаторы будут одинаковыми, но это было не так. Мысли?