Pour ton premier exemple, les variables en Python contiennent effectivement des références vers leurs valeurs. Du coup "phrase = fable" te laisse avec deux variables qui partagent la même référence, que tu fasses ta modification en passant par l'une ou par l'autre ne change rien.
Tu peux considérer que toutes les variables fonctionnent toujours comme ça, même si en pratique la VM fait probablement plein de raccourcis quand tu manipules par exemple des entiers, pour éviter de payer le prix fort à chaque opération. De ton point de vue en tout cas, ça devrait être transparent. Te connaissant tu vas avoir du mal à t'empêcher d'aller regarder sous le capot, mais ça a été conçu pour que tu n'aies pas à te poser ce genre de questions
