Il est indiqué que les chaînes de caractères sont des objets immuables, et lorsque nous apportons des modifications à cette variable, cela crée en réalité un nouvel objet chaîne de caractères.
Alors, je voulais tester ce phénomène avec ce morceau de code:
result_str = ""
print("chaîne 1 (non modifiée):", id(result_str))
for a in range(1,11):
result_str = result_str + str(a)
print(f"chaîne {a+1}:", id(result_str))
Et j'ai obtenu les ID suivants:
chaîne 1 (non modifiée): 2386354993840
chaîne 2: 2386357170336
chaîne 3: 2386357170336
chaîne 4: 2386357170336
chaîne 5: 2386357170336
chaîne 6: 2386357170336
chaîne 7: 2386357170336
chaîne 8: 2386357170336
chaîne 9: 2386360410800
chaîne 10: 2386360410800
chaîne 11: 2386360410800
Alors, si chaque chaîne est différente des autres, pourquoi les chaînes 2-8 et 9-11 ont-elles le même ID? Et, si d'une certaine manière cette question est expliquée, pourquoi l'ID change-t-il spécifiquement à la chaîne 9?