Afficher le nom d'une variable en python

Salamander77 -  
mamiemando Messages postés 33772 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.
A voir également:

4 réponses

georges97 Messages postés 13775 Date d'inscription   Statut Contributeur Dernière intervention   2 650
 
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
Salamander77
 
Merci beaucoup.
0
Salamander77
 
Ok je vais essayer votre solution.
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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
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
georges97 Messages postés 13775 Date d'inscription   Statut Contributeur Dernière intervention   2 650
 
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
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882 > georges97 Messages postés 13775 Date d'inscription   Statut Contributeur Dernière intervention  
 
Pas de soucis :-)
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
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
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
Salamander77 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
C'a marche!!!!!!!
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
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
Salamander77 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Ok, je comprends.
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882 > Salamander77 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Salamnder77,

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