Afficher le nom d'une variable en python

Salamander77 -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis débutant en programmation et j'ai besoin de savoir comment afficher le nom d'une variable au lieu d’afficher sa valeur dans python. A titre d'exemple, je vous montre une fonction
echange
qui prend en paramètre deux variables et qui permute leurs valeurs :

def echange(x,y):
    c=y
    y=x
    x=c
    print("x=", x, "y=", y)


Si les deux variables choisies s'appellent
x
et
y
comme dans la définition de la fonction le résultat est cohérent (c'est normal). A titre d'exemple on pourrait avoir:
x= 231 y= 123


Mais si je décide d'appeler mes deux variables autrement:
e=123
f=231
echange(e,f)

... j'aurais toujours
x= 231 y= 123
.

Je cherche donc un moyen pour faire dans mon code ceci:
print("le nom de la premier variable dans la définition de la fonction=", valeur de la première variable, "le nom de la deuxième variable dans la définition de la fonction", valeur de la deuxième variable)


Merci beaucoup de bien vouloir m'aider.

4 réponses

  1. georges97 Messages postés 14561 Date d'inscription   Statut Contributeur Dernière intervention   2 914
     
    Bonjour,

    Une piste:

    Vus pouvez utiliser des variables pour vos noms de variables:

    premier = "premier"
    deuxième = "deuxième"

    <code>def echange(x,y):
        c=y
        y=x
        x=c
        print(premier,"=",x, deuxième,"=", y)


    Les virgules délimitent les variables chaines de caractères et entiers ainsi que les textes ("*"), des espaces se plaçant par défaut autour de ces textes).

    Par ailleurs, pour éviter de changer le script à chaque exécution, vous pouvez créer deux lignes d'input pour entrer les nouveaux noms de variables, sous la forme:

    input("variable n°1:" , premier)
    input("variable n°2:" , deuxième)
    0
    1. Salamander77
       
      Merci beaucoup.
      0
    2. Salamander77
       
      Ok je vais essayer votre solution.
      0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Je cherche donc un moyen pour faire dans mon code ceci:
    print("le nom de la premier variable dans la définition de la fonction=", valeur de la première variable, "le nom de la deuxième variable dans la définition de la fonction", valeur de la deuxième variable)
    Merci beaucoup de bien vouloir m'aider.


    Tu ne peux pas. Si c'était possible, ça irait à l'encontre de la notion de variable locale.

    La manière dont tu nommes un paramètre de fonction n'a aucune implication sur le noms des variables utilisés lors de son appel. D'ailleurs, il n'y a même pas forcément de variable à l'appel (par exemple si tu appelles
    echange([1, 2], [3, 4])
    .

    Le nom d'une variable n'est pas "transporté" avec la variable. Seule sa valeur est en mémoire. Le nommage des variables et juste une manière de s'y retrouver pour le programmeur et pour permettre à ton interpréteur python de savoir quel bloc mémoire doit circuler d'une fonction à l'autre. Note que ce que j'explique reste vrai quel que soit le langage de programmation.

    En conséquence, si tu veux afficher le contenu de variables dans ta fonction
    echange
    :
    • soit tu utilises les noms de variable locales à
      échange
      ,
    • soit tu utilises la solution proposée par georges67.


    Enfin, tu peux afficher le contenu des variables locales d'une fonction avec
    print(locals())
    . La fonction
    locals
    retourne un dictionnaire qui associe les noms de variables locales à leur valeur.

    Bonne chance
    0
    1. Salamander77
       
      Merci beaucoup, je viens de comprendre beaucoup de chose d'un coup. Je vais prendre le temps de relire votre message afin de mieux comprendre.
      Merci de m'avoir aider.
      0
    2. georges97 Messages postés 14561 Date d'inscription   Statut Contributeur Dernière intervention   2 914
       
      Bonsoir mamiemando,

      J'ai eu peur un instant que tu n'invalides ma proposition, que j'avais testée auparavant, mais qui introduisait comme tu l'expliques utilement, des variables globales. A l'évidence, tes solutions cadrent mieux avec l'énoncé de Salamender77 Je continue mon apprentissage, ce qui me permet de bénéficier de tes conseils et éventuelles rectifications.

      Bonne soirée.
      0
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940 > georges97 Messages postés 14561 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Pas de soucis :-)
        0
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

    Après, ce problème de noms mis à part, on peut échanger les valeurs de 2 variables de cette façon:

    x,y = y,x


    :-)
    0
    1. Salamander77
       
      Trop cool et simple. Si ça fonctionne, c'est beaucoup plus pratique que tous le tralala que j'ai écrit. Merci mec, je prends note.
      0
    2. Salamander77 Messages postés 2 Statut Membre
       
      C'a marche!!!!!!!
      0
  4. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    En fait, en Python, au lieu de:

    x=10
    y=20


    on peut écrire:

    x,y = 10,20


    donc pourquoi pas:

    x,y = y,x
    0
    1. Salamander77 Messages postés 2 Statut Membre
       
      Ok, je comprends.
      0
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940 > Salamander77 Messages postés 2 Statut Membre
         
        Bonjour Salamnder77,

        Est-ce que ton problème est résolu ? Si oui, voir comment le basculer en résolu.
        0