Tester l'existence d'une variable en Python

Lorsque l’on débarque de langage plus permissif que Python comme PHP ou Perl on est surpris lorsqu’en essayant de tester l’existence d’une variable avec un simple if le programme s’arrete.

if toto:
    print toto
Traceback (most recent call last):
  File "./test.py", line 4, in ?
    if toto:
NameError: name 'toto' is not defined

En Python on part du principe qu’il est plus facile de demander pardon que de d’obtenir la permission. En effet si vous voulez utiliser une variable, Python va devoir tester en interne si cette variable existe. Si vous testez l’existence de la variable avant le test sera effectué deux fois. Une perte de temps non? Python lève donc des exceptions en cas de problème.

Dans le cas qui nous intéresse il suffit donc de catcher l’exception NameError.

try:
  print toto
except NameError:
  print "Toto n'existe pas"