FAQ Python
Un article de Haypo.
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.) :
- vim
- Emacs
- => Liste complète des éditeurs sur python.org
IDE :
- Stani's Python Editor (SPE)
- IDLE
- pydev (greffon Eclipse)
- => Liste complète des IDE sur python.org
[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 :
- PyQt n'est sous licence GNU GPL que depuis la version 4
- 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 :
- FAQ developpez.com
- Flibuste : questions générales et questions pratiques
En anglais :

