IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Tranches : Référence ou copie ?


Sujet :

Python

  1. #1
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut Tranches : Référence ou copie ?
    Bonjour,

    Je me demande si les tranches fonctionne par référence ou par copie :

    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
    a vaut [1, [1, 0, 3], 3]
    b vaut [1, [1, 2, 3], 3]

    Ce qui semble indiquer qu'une tranche réalise une copie.

    Mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    l=[1,2,3]
    l[1:2] = [42]
    Là, l vaut [1, 42, 3], ce qui semble indiquer qu'une tranche fonctionne par référence.

    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,
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  2. #2
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    En lisant, la doc, j'ai trouvé ceci:

    Une tranche renvoi une copie des éléments de la séquence.
    L'affectation d'une tranche est similaire à une suppression suivi d'une insertion
    Donc l'interpréteur python regarde comment est utilisé la tranche pour faire son traitement (je ne mettais jamais posé la question auparavant)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Référence ou copie ?
    Par Hibouroi dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 15/04/2011, 10h58
  2. passage par référence et copie
    Par akira215 dans le forum C++
    Réponses: 4
    Dernier message: 13/01/2010, 20h30
  3. Passage par copie vs passage par référence
    Par bolhrak dans le forum C++
    Réponses: 11
    Dernier message: 20/08/2006, 23h37
  4. Réponses: 4
    Dernier message: 14/07/2006, 02h30
  5. Réponses: 11
    Dernier message: 21/05/2006, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo