This is an old revision of the document!
Table of Contents
Python
Doc
- Doc python current (python.org)
- Doc python 2.6.4 (local)
- Télécharger Doc python 2.6.4 (local, tar.bz2)
- Télécharger Doc python 2.6.4 (local, zip)
- DiveIntoPython fr (developpez.com)
Basics
- Simple statements (official doc)
- Compound statements (official doc)
- HowTo Unicode (official doc)
- HowTo's (official doc)
Interactive Shell
Python est livré de base avec un shell interactif très utile. Mais il peut être utile de l'améliorer en ajoutant des petites objets custom aux petits oignons ou encore en utilisant des shells alternatifs comme ipython.
Objets custom
Il est possible d'ajouter des objets au shell via la variable d'environnement PYTHONSTARTUP=chemin_vers_le_fichier_python
.
Le namespace du shell contiendra alors tous les objets contenus dans le fichier indiqué.
Exemple:
def grep(pat, list, re=False): """Works on list of strings. When 're' argument is turned on, re.search is used instead of str.find.""" if re: import re def match(item): if re.search(pat, item): return True else: return False else: def match(item): if item.find(pat) >= 0: return True else: return False for item in list: if match(item): print item
NB: Ipython ne tient pas compte de PYTHONSTARTUP
. Pour charger des trucs custom, voir ipythonrc.
Ipython
Ipython est un shell interactif amélioré (coloration syntaxique, historique inter-instances, auto-complétion et autre goodies).
Cygwin
Pour lancer ipython sur Cygwin, taper simplement ipython
dans le prompt causera une erreur bash: … /usr/bin/python : Bad interpreteur : Permission Denied
.
La solution la plus simple consiste à préférer ipython.bat
pour lancer ipython. Un alias dans le .bashrc de cygwin permet de retrouver un jolie syntaxe.
ipythonrc
Valable pour iptyhon 0.10
Ipython possède un système de fichiers de configuration à la UNIX. Dans la version 0.10, éditer ipy_user_conf.py
situé dans le répertoire .ipython
dans le $HOME.
Pour charger utiliser le PYTHONSTARTUP
, on peut y ajouter:
def import_pystartup(): """Import custom function in shell from PYTHONSTARTUP. PYTHONSTARTUP is a environnement variable shared among different python shells.""" import os filename = os.environ.get('PYTHONSTARTUP') if filename and os.path.isfile(filename): # execfile(filename) # Can't use builtin execfile function in ipython... execf(filename)
sans oublier d'appeler cette fonction dans le main
.
Unicode
RegExp
PyGTK
Tkinter
Threading
Advanced Python
- Le décorateur (explication compréhensible, rare sur le web)
- Sorting (official doc)
Profilage, optimisation et performances
Recipes
Advocacy
- Présentation de Luxor-XUL, qui comprends un plaidoyer pour Python assez synthetic
- Python Advocacy HowTo (from official doc)
ErrorMsg
- re:
Common Bad Programming Pattern
Référence à un objet
Lorsque l'on fait un assignement sur un objet, Python réalise une copie par référence (sorte de pointeur, hard link). Tout assignement sur le nouveau nom affecte naturellement le premier nom puisqu'ils référencent le même objet.
class A(): c = 1 a = A() b = a b.c = 2 # a.c returns 2 d = A.c e = d e = 2 # d.c returns 1
Cependant, lorsque l'on fait un assignement sur un attribut d'un object, le nom vient référencer la valeur retournée par l'attribut. L'assignement d'une nouvelle valeur ne modifira pas la valeur de l'attribut de l'objet. Cela se comprend facilement:
a = A() >>> a # returns <class __main__.A at 0x02433150> (la référence) b = a.c >>> b # returns 1 (la valeur)
Pour référencer l'attribut d'un objet, utiliser getattr (super puissant!)
f = getattr(a, "c")