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 :

par copie ou par référence ?


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut par copie ou par référence ?
    Bonjour ,

    Est-ce que quelqu'un pourrait m'expliquer pourquoi dans la première fonction (supp) le passage des arguments semble se faire par copie et dans la seconde fonction (up) par référence ?

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> a = {1:2,3:4}
    >>> def supp (asupp) : 
    ...     asupp = {}
    ... 
    >>> supp(a)
    >>> print a
    {1: 2, 3: 4}
    >>> def up (aup) : 
    ...     aup.update({2:9})
    ... 
    >>> up(a)
    >>> print a
    {1: 2, 2: 9, 3: 4}

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    dans les deux cas le passage des arguments se fait par référence.

    dans la première fonction, lorsque tu fais:

    python crée une nouvelle variable (dans un emplacement mémoire différent de ton dictionnaire a)

    dans ta deuxième fonction, tu modifies l'emplacement mémoire de a avec un update.

    si le but de ta fonction est de vider a:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def supp(asupp):
        asupp.clear()

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    oki, c'est très clair maintenant. Merci pour cette réponse rapide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/12/2014, 20h03
  2. Passage de paramètres par adresse ou par copie ?
    Par EpiTouille dans le forum Langage
    Réponses: 6
    Dernier message: 24/12/2011, 10h31
  3. [c++] constructeur par copie et par parametre
    Par mahboub dans le forum Débuter
    Réponses: 9
    Dernier message: 05/03/2009, 21h56
  4. Passage par copie vs passage par référence
    Par bolhrak dans le forum C++
    Réponses: 11
    Dernier message: 20/08/2006, 23h37

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