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 savoir si une variable est initialisée ?


Sujet :

Python

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 7
    Par défaut Comment savoir si une variable est initialisée ?
    Bonjour,
    étant assez nouveau dans le langage python j'ai une question assez basique dont je n'ai pas trouvé la réponse dans les livres python et la doc. Je veux faire une initialisation paresseuse et j'ai besoin de pouvoir tester si une variable a été initialisée. Quelque chose d'équivalent à
    if var == null.
    Merci d'avance
    Nicolas

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Si c'est une variable dans une classe, il faut utiliser __dict__

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class a:
        def c(self):
            self.d=4
        def b(self):
            if 'd' in self.__dict__:
                  print self.d
            else: print 'd non initialisé'
    v=a()
    v.b() => 'd non initialisé'
    v.c()
    v.b() => 4
    par contre si c'est une variable global, je sais pas trop mais ca doit aussi se faire du cote de dict

  3. #3
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Pour une variable globale

    tu fais simplement
    Regarde ici du côté de globals, locals et vars
    http://docs.python.org/lib/built-in-funcs.html

  4. #4
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 7
    Par défaut
    merci j'avais pas pensé à le prendre sous cet angle. effectivement c'est logique

  5. #5
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Citation Envoyé par nabix
    merci j'avais pas pensé à le prendre sous cet angle. effectivement c'est logique
    Toutefois, la variable à tester n'est pas forcément toujours une variable de classe.

    Lorsque je veux tester si une variable est initialisée ou non, je la déclare d'abord sous la forme :

    Ensuite, lorsque je veux tester si on lui a attribué une valeur non nulle, je le fais sous cette forme :

    Si je veux tester si la variable est restée sans valeur :

    Attention, une variable de classe initialisée à None figure dans __dict__.

  6. #6
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 7
    Par défaut
    Lorsque je veux tester si une variable est initialisée ou non, je la déclare d'abord sous la forme :

    Ensuite, lorsque je veux tester si on lui a attribué une valeur non nulle, je le fais sous cette forme :


    Attention, une variable de classe initialisée à None figure dans __dict__.

    Mais inversément le
    ne marchera pas si la var n'a pas été initialisé à None ?

  7. #7
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Mais inversément le
    ne marchera pas si la var n'a pas été initialisé à None ?
    Non, Python te génèrera une erreur...

  8. #8
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Par contre, si tu n'as pas envie d'initialiser ta variable à None, ou si dans ton programme tu veux différencier une variable non initialisée d'une variable initialisée à None, tu as toujours la possibilité d'utiliser le traitement des exceptions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try:
        if var:
            print "initialisée à une valeur non nulle""
        else:
            print "initialisée à None"
    except:
        print "Non initialisée"

  9. #9
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Citation Envoyé par Alain_72
    Par contre, si tu n'as pas envie d'initialiser ta variable à None, ou si dans ton programme tu veux différencier une variable non initialisée d'une variable initialisée à None, tu as toujours la possibilité d'utiliser le traitement des exceptions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try:
        if var:
            print "initialisée à une valeur non nulle""
        else:
            print "initialisée à None"
    except:
        print "Non initialisée"
    mouais,je trouve pas ça super propre ta méthode. En plus si var=0, ben t'es bon pour faire un autre test.
    Moins y'a de lignes, mieux c'est

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

Discussions similaires

  1. Comment savoir si une variable a été initialisée?
    Par midweb dans le forum Débuter
    Réponses: 9
    Dernier message: 25/07/2011, 10h31
  2. Comment savoir si une variable est vide ?
    Par Antoun dans le forum Windows
    Réponses: 5
    Dernier message: 25/05/2008, 00h31
  3. [débutant] Comment savoir si une variable est définie
    Par guidav dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/11/2006, 17h47
  4. Réponses: 3
    Dernier message: 28/07/2006, 15h45
  5. Réponses: 9
    Dernier message: 06/02/2006, 14h12

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