независимо от того, назначаете ли вы этот промежуточный результат переменной или нет.

кто-то объяснить это мне? Итак, я играл с командой 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

Это показалось мне странным, потому что'кошка' строка с адресом 5181152, но новыйa имеет другой адрес. Так что, если есть два'кошка' строки в памяти, почему два адреса не напечатаны дляИдентификатор ( «кошка»)? Моя последняя мысль была о том, что конкатенация как-то связана с изменением адреса, поэтому я попробовал это:

>>> id(b[0:2]+'t')
39921024
>>> b = b[0:2]+'t'
>>> b
'cat'
>>> id(b)
40000896

Я бы предсказал, что идентификаторы будут одинаковыми, но это не так. Мысли?

Ответы на вопрос(1)

Ваш ответ на вопрос