Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Python "unterstützt", was in der Sprach- und Bibliotheksbeschreibung steht. AFAIK wird da zu diesem Thema nichts gesagt. Was man sagen könnte ist, dass ab Python 3.x `range` nicht mehr eine Liste erzeugt, wie es zuvor der Fall war und `[:]` darauf nicht mehr funktioniert.
Was die einzelnen Implementierungen machen, um zu optimieren, ist eine andere Frage. Ich würde raten, dass `[:]` sofort eine Kopie zieht, denn das macht die Leseoperationen schneller, da man jetzt nicht jedes Mal testen muss, ob man sich die Liste teilt. Andererseits, schnelle Slice-Operationen sind auch nicht zu verachten. Dennoch würde ich in meiner eigenen Implementierung nur für tuple die zugrunde liegenden Daten teilen.
Da deep copy rekursiv vorgeht, kann es allgemein nicht schneller sein, als die shallow copy durch `[:]` und hier würde sich copy-on-write auch nur für die Blätter des möglichen Baums lohnen.