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 :

Comment afficher le nom d'une variable et non sa valeur?


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment afficher le nom d'une variable et non sa valeur?
    Bonjour à tous!

    Voici en quelques mots simples (j'espère) mon problème:

    je crée deux variables:

    a=1
    b=1

    je crée une liste:

    lst=[a, b]

    je veux créer un petit programme de ce type:

    if lst[0] == a:
    instruction numéro 1
    if lst[0] == b:
    instruction numéro 2

    problème: mon programme marche si a et b ont des valeurs différentes, mais pas si elles ont la même valeur!

    En gros, quand il y a la même valeur, il me répète deux fois l'instruction 1. Or je veux distinguer les variables même si elles ont des valeurs identiques.

    J'ai cru à un moment tenir une solution avec "id"

    if id(lst[0]) == id(a):
    instruction numéro 1
    elif id(lst[0]) == id(b):
    instruction numéro 2

    mais ma grosse erreur que vous devinez est que l'id de deux variables de même valeur est le même! donc même résultat.

    Une solution serait d'utiliser le nom de la variable et non sa valeur

    par exemple, un code du genre:

    if name(lst[0]) == name(a) # j'invente ici une fonction "name" qui n'existe pas, ou peut-être sous un autre nom...
    instruction numéro 1
    elif name(lst[0]) == name(b):
    instruction numéro 2

    de cette façon, quelque soit la valeur des variables, identiques ou différentes, je pourrai les manipuler tantôt avec le nom, tantôt avec la valeur...


    Mais je rêve peut-être...

    Ou alors s'il existe une solution avec un autre identifiant unique pour chaque valeur, ce serait chouette.

    Merci d'avance!!

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Points : 482
    Points
    482
    Par défaut
    Bonjour,

    Il faut passer par une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class create_var:
    	def __init__(self, var):
    		self.var = var
     
    a = create_var(1)
    a.var # 1
    b = create_var(1)
    b.var # 1
     
    id(a) == id(b) # False
    a == b # False
    a.var == b.var # True

    Sinon il y a peut-être une méthode avec le NameSpace locals() ou globals() mais c'est sans doute moins fiable.

  3. #3
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Bonjour,

    problème: mon programme marche si a et b ont des valeurs différentes, mais pas si elles ont la même valeur!
    Cela ne doit pas vous étoner, car == est un opérateur qui compare la valeur de deux objets.
    si a == b et b == c alors a == c

    mais ma grosse erreur que vous devinez est que l'id de deux variables de même valeur est le même! donc même résultat.
    Pas tout a fait, en python il y a deux catégories d'objets, les mutables et les immuables. On ne peut pas utiliser l'identifiant avec les immuables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # immuable
    1 is 1 # True
    "salut" is "salut" # True
    # mutable 
    [] is [] # false
    {} is {} # false
    Une solution serait d'utiliser le nom de la variable et non sa valeur
    Sauf que cela ne se fait pas, les noms des variables ne doivent pas interférer avec la logique du programme.
    C'est comme si dans une usine, les machines qui construisent un produit se retrouvent à intégrer le produit lui même.

    Que souhaitez-vous faire exactement ?
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

Discussions similaires

  1. comment afficher le contenu d'une variable dans un edit
    Par alimo44 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 07/06/2010, 21h11
  2. Réponses: 16
    Dernier message: 28/08/2009, 11h09
  3. Réponses: 9
    Dernier message: 05/11/2008, 10h50
  4. Comment afficher le contenu d'une variable ?
    Par innova dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2007, 11h45
  5. Comment modifier le nom d'une variable?
    Par dagra dans le forum Langage
    Réponses: 4
    Dernier message: 11/04/2007, 10h23

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