Duplicate possible:
n moyen facile de vérifier que la variable est définie en python?
Comment puis-je vérifier si une variable existe en Python?
Comment savoir si une variable a été définie à un endroit particulier du code au moment de l'exécution? Cela n’est pas toujours évident car (1) la variable peut être définie de manière conditionnelle et (2) la variable peut être supprimée de manière conditionnelle. Je cherche quelque chose comme defined()
dans Perl ou isset()
dans PHP ou defined?
dans Ruby.
if condition:
a = 42
# is "a" defined here?
if other_condition:
del a
# is "a" defined here?
try:
thevariable
except NameError:
print "well, it WASN'T defined after all!"
else:
print "sure, it was defined."
'a' in vars() or 'a' in globals()
si vous voulez être pédant, vous pouvez aussi vérifier les fonctions intégrées'a' in vars(__builtins__)
Je pense qu'il vaut mieux éviter la situation. C'est plus propre et plus clair d'écrire:
a = None
if condition:
a = 42
try:
a # does a exist in the current namespace
except NameError:
a = 10 # nope
Une situation possible où cela pourrait être nécessaire:
Si vous utilisez le bloc finally
pour fermer des connexions, mais dans le bloc try
, le programme se ferme avec sys.exit()
avant que la connexion ne soit définie. Dans ce cas, le bloc finally
sera appelé et l'instruction de fermeture de la connexion échouera car aucune connexion n'a été créée.
Dans ce cas particulier, il est préférable de faire a = None
au lieu de del a
. Cela décrémentera le nombre de références sur l'objet a
était (le cas échéant) attribué à et n'échouerait pas lorsque a
n'est pas défini. Notez que l'instruction del
n'appelle pas le destructeur d'un objet directement, mais le dissocie de la variable. Le destructeur d'objet est appelé lorsque le compte de références est devenu zéro.