Afficher le nom d'une variable en python

Fermé
Salamander77 - Modifié le 21 févr. 2022 à 19:52
mamiemando Messages postés 33336 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 5 novembre 2024 - 28 févr. 2022 à 12:40
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

georges97 Messages postés 12468 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 5 novembre 2024 2 394
Modifié le 21 févr. 2022 à 19:53
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
Merci beaucoup.
0
Ok je vais essayer votre solution.
0
mamiemando Messages postés 33336 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 5 novembre 2024 7 801
Modifié le 21 févr. 2022 à 20:03
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
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 12468 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 5 novembre 2024 2 394
21 févr. 2022 à 20:54
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 33336 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 5 novembre 2024 7 801 > georges97 Messages postés 12468 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 5 novembre 2024
28 févr. 2022 à 12:39
Pas de soucis :-)
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
22 févr. 2022 à 11:06
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
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 lundi 21 février 2022 Statut Membre Dernière intervention 22 février 2022
22 févr. 2022 à 11:21
C'a marche!!!!!!!
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
22 févr. 2022 à 11:32
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 lundi 21 février 2022 Statut Membre Dernière intervention 22 février 2022
22 févr. 2022 à 11:45
Ok, je comprends.
0
mamiemando Messages postés 33336 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 5 novembre 2024 7 801 > Salamander77 Messages postés 2 Date d'inscription lundi 21 février 2022 Statut Membre Dernière intervention 22 février 2022
28 févr. 2022 à 12:40
Bonjour Salamnder77,

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