2011-10-22 1 views

Répondre

7

Tentative d'importation et définition d'un indicateur en cas d'échec. Ensuite, utilisez le drapeau pour déterminer si vous souhaitez offrir une sortie graphique:

try: 
    import Tkinter 
    gui_installed = True 
except ImportError: 
    gui_installed = False 


... 

result = somecalc() 
if gui_installed: 
    display_with_gui(result) 
else: 
    display_as_text(result) 
+0

Et avec cela, je ne devrais pas obtenir une erreur avec le display_with_gui pas trouvé, parce que ce serait seulement essayer de charger cette fonction si Tkinter existe, non? –

+0

C'est correct. Python utilise call-by-name qui n'est recherché que lorsqu'une fonction est appelée. Le travail de l'instruction if est de s'assurer que l'appel ne peut avoir lieu que lorsque la bibliothèque appropriée a été importée avec succès. –

1

Oui. Vous pouvez envelopper une instruction import dans un bloc try - except. Il est couramment utilisé pour la rétrocompatibilité. Par exemple, en important un module de secours en tant que module désiré. De cette façon, le reste du code peut ignorer quel module est réellement utilisé.

0

Au lieu d'un drapeau comme suggested by @Raymond Hettinger vous pouvez définir à None le nom réel qui fournit des fonctionnalités optionnelles:

try: import Tkinter 
except ImportError: 
    display_with_gui = None 
else: 
    def display_with_gui(): # use Tkinter here 
     pass 

result = somecalc() 
if display_with_gui: 
    display_with_gui(result) 
else: 
    display_as_text(result) 
Questions connexes