a = 'af'
b = 'a'
b += 'f'
print(a is b)
>>> False
a = 5
b = 2
b += 3
print(a is b)
>>> True
Почему и как это доказать? В интернете по этому поводу я не нашёл ответ. Ответ по типу: cмотри вот id(a), а вот id(b) не подойдут. Интересен сам алгоритм is.
Я, конечно, догадываюсь, что оно где-то на поверхности, но всё же, не даёт покоя, почему. Str не такой простой класс.
UPD. И вот ещё, что интересное.
a = 'af'
b = 'a' + 'f'
print(a is b)
>>> True
UPD2 И еще кое-что интересное.
a = 10.0
b = 7.0
b += 3.0
print(a is b)
>>> False
Значит проблема таится в int, или в обратную смотреть в str и float?