Question

  

Possible en double:    facile de vérifier cette variable est définie en python?
   Comment puis-je vérifier si une variable existe en Python?

Comment savez-vous si une variable a été fixée à un endroit particulier dans le code lors de l'exécution? Ce n'est pas toujours évident parce que (1) la variable peut être réglée sous condition, et (2) la variable pourrait être conditionnelle supprimé. Je cherche quelque chose comme defined() en Perl ou PHP ou en isset() defined? en Ruby.

if condition:
    a = 42

# is "a" defined here?

if other_condition:
    del a

# is "a" defined here?
Était-ce utile?

La solution

try:
    thevariable
except NameError:
    print("well, it WASN'T defined after all!")
else:
    print("sure, it was defined.")

Autres conseils

'a' in vars() or 'a' in globals()

si vous voulez être pédant, vous pouvez vérifier les builtins aussi
'a' in vars(__builtins__)

Je pense qu'il est préférable d'éviter la situation. Il 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 possible situation où cela pourrait être nécessaire:

Si vous utilisez bloc finally pour fermer les connexions mais avant que la connexion est défini le bloc try, le programme se termine avec sys.exit(). Dans ce cas, le bloc de finally sera appelée et la déclaration de clôture de connexion échouera car aucune connexion 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émenter compte de référence à l'objet a était (le cas échéant) et affecté à ne manquera pas quand a est pas défini. Notez cette déclaration del ne remet pas destructor d'un objet directement, mais le dissocier variable. Destructeur d'objet est appelé lorsque le nombre de référence est devenu nul.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top