Bonjour,
Je me demande si les tranches fonctionne par référence ou par copie :
a vaut [1, [1, 0, 3], 3]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 l=[1,2,3] a = [1, l, 3] b = [1, l[:], 3] l[1] = 0
b vaut [1, [1, 2, 3], 3]
Ce qui semble indiquer qu'une tranche réalise une copie.
Mais :
Là, l vaut [1, 42, 3], ce qui semble indiquer qu'une tranche fonctionne par référence.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 l=[1,2,3] l[1:2] = [42]
Alors, où le passage de référence à copie se fait-il ? Est-ce dans l'opérateur d'affectation (désolé du nom, je viens du C++ et ne connais pas la nomenclature Python sur le sujet) d'une tranche ? Si oui, la transformation fondamentale de référence à copie dans une tel opérateur n'est-elle pas une source de confusion ? Est-ce un style de programmation courant que l'on retrouve ailleurs en Python ?
Merci,
Partager