FAQ Python

Un article de Haypo.

Retour à la page précédente la page Python

Cette page donne des réponses courantes aux questions posées sur #python-fr (salon IRC du serveur Freenode).

Sommaire

[modifier] Savoir si une variable est définie ou non

[modifier] Exception NameError

En Python, lorsqu'on utilise une variable inexistante, une exception NameError est levée. On peut l'attraper comme n'importe quelle variable :

try:
   print x
except NameError:
   print "Erreur: La variable x n'existe pas"

Autres exceptions :

  • AttributeError : attribut d'un objet inexistant (ex: print objet.existepas)
  • KeyError : entrée inexistante dans un dictionnaire (ex: print {}["existepas"])
  • IndexError : entrée inexistante dans une liste/un tuple (ex: print [1, 2, 3][10])

[modifier] bool(x)

Autre solution : convertir la valeur en boolean (vrai ou faux). Le résultat dépend du type de la variable :

  • None: False
  • int, long ou float: True si x est différent de zéro (x != 0)
  • str: True si la chaîne est non vide
  • list ou tuple: True si la liste contient au moins un élément
  • objet quelconque: appelle la méthode __bool__() ou si elle n'existe pas appelle __len__()

Exemples :

>>> bool(None), bool(0), bool(0.0), bool(""), bool([]), bool(tuple())
(False, False, False, False, False, False)
>>> bool(1), bool(2.0), bool("abc"), bool(["a", "b"]), bool(("a", "b"))
(True, True, True, True, True)

bool(x) est utilisé implicitement lorsqu'on écrit « if x: (...) », c'est donc équivalent à « if bool(x) == True: (...) ».

[modifier] None

Python a une valeur spéciale qui permet d'indiquer qu'une variable n'a pas de valeur : c'est le mot clé None.

Exemple d'une fonction qui retourne None lorsqu'on ne peut pas déterminer le résultat (indiquer une erreur) :

>>> def estPair(nombre):
...    if not isinstance(nombre, int):
...       return None
...    return (nombre % 2) == 0
...
>>> print estPair(6)
True
>>> print estPair(7)
False
>>> print estPair("chaine")
None

Note : dans cet exemple, lever une exception TypeError aurait été plus approprié.

[modifier] Éditeurs et IDE

Éditeurs de texte (coloration syntaxique, indentation automatique et correcte, complétion, etc.) :

IDE :

[modifier] Interfaces graphiques

Nom Licence
pyGtk GNU LGPL
PyQt GNU GPL (1)
wxPython GNU LGPL (2)
Tk GNU GPL

La licence GPL interdit de faire un logiciel propriétaire contrairement à la LGPL.

Critiques des différentes bibliothèques :

  • wxPython (2.7) est bogué (ça arrive que ça segfault) est pas aussi portable qu'il le dit (le comportement de certaines fonctions n'est pas identique sous Windows, Mac et Linux).
  • Tk est affreusement moche et vieillot.
  • pyGtk aurait des problèmes sous Mac (info à confirmer car les captures d'écran de Gimp semble indiquer le contraire)

Notes :

  1. PyQt n'est sous licence GNU GPL que depuis la version 4
  2. En fait, wxPython est sous licence wxWidgets qui est une variante de la LGPL (wxWidgets License is essentially the LGPL with a few extensions that make the code just a little bit more Free)

Lire aussi : Python graphique.

[modifier] Unicode

Lire Python Unicode et Charsets et encoding (sebsauvage.net).

[modifier] Autres FAQ Python

En français :

En anglais :

[modifier] Voir aussi