Академический Документы
Профессиональный Документы
Культура Документы
Le
support
d'associations
d'une
communaut
d'entreprises,
d'individus
et
Tabledesmatires
1. quoi ressemble Python ?.................................................................3
1.Un langage facile et lisible.........................................................................................
lisible......................................................................................... 3
2.Un mode interactif et un dbogueur intgr..............................................................
intgr.............................................................. 4
3.Multi-plateforme et interoprable..............................................................................
interoprable.............................................................................. 5
4.Ouvert et libre............................................................................................................
libre............................................................................................................ 5
5.Moderne et Multi-paradigme.....................................................................................
Multi-paradigme..................................................................................... 5
4.Communaut.................................................................................... 39
5.Conclusion........................................................................................ 40
6.Licence et diffusion..........................................................................41
Page 2 / 41
1. quoi ressemble
Python ?
1. Un langage facile et lisible
Python se caractrise par une syntaxe claire et lisible. Ce principe dcoule
d'une constatation simple : un programme est lu bien plus souvent qu'il n'est
crit. Il faut donc que la comprhension du code la lecture soit la plus
rapide possible. Ceci prend mme une importance considrable en milieu
professionnel o un programme peut changer de mains plusieurs fois et doit
tre maintenu sur le long terme.
Cette lisibilit provient de plusieurs caractristiques :
Page 3 / 41
Page 4 / 41
3. Multi-plateforme et interoprable
Python
fonctionne
sur
toutes les plateformes les
plus courantes, Windows,
Linux et Mac Os, ainsi que
sur de nombreux autres
systmes, y compris des
plateformes mobiles telles que Maemo ou Android.
Python fonctionne galement sur la machine virtuelle Java de Sun ou sur la
plateforme .NET de Microsoft, donnant ainsi un accs direct toutes les API
Java ou .NET. Les versions correspondantes s'appellent Jython et IronPython.
Enfin, le module ctypes permet d'utiliser nativement n'importe quelle
bibliothque crites en C. Python est dans ce cas idal comme langage de
glue.
4. Ouvert et libre
Les diffrentes versions de Python sont toutes publies sous une licence libre
permissive, autorisant l'criture de logiciels libres ou propritaires. Python
peut tre librement modifi, redistribu et mme intgr l'intrieur d'un
autre logiciel pour lui offrir des capacits de scripting.
5. Moderne et Multi-paradigme
Au-del d'une syntaxe trs lisible, Python possde un typage fort mais
dynamique, une compilation automatique en bytecode, un garbage collector,
une gestion des exceptions, de l'Unicode, de la programmation multithread et
multiprocess ainsi que d'autres caractristiques qui en font un langage
moderne et de plus en plus utilis.
Python est un langage multiparadigme : il est possible de programmer en
mode impratif, sans tre un expert de la programmation objet. Si, en
revanche, on programme avec des objets, on peut plonger sans difficult
dans tous les motifs de conception (Design Patterns), y compris en utilisant
des interfaces ou des classes abstraites. La programmation fonctionnelle,
enfin, peut tre aborde grce l'importance accorde aux listes, aux
itrateurs, aux gnrateurs ou grce la prsence des fonctions map, reduce,
filter et des fonctions anonymes lambda.
Page 5 / 41
Page 6 / 41
expressions rationnelles
difflib
datetime
calendar
math
oprations mathmatiques
random
oprations alatoires
zlib
oprations de compression
csv
ConfigParser
sqlite3
md5, sha
oprations de hachage
shutil
io
threading
programmation multithread
subprocess
cration de sous-processus
multiprocessing
programmation multiprocessus
Page 7 / 41
json
webbrowser
cgi
httplib
programmation HTTP
ftplib
programmation FTP
poplib
imaplib
smtplib
colorsys
imghdr
sndhdr
doctest
unittest
pdb
le dbogueur Python
profile
le profileur Python
gc
inspect
Page 8 / 41
PostgreSQL
MySQL
Oracle
SQLite
Ingres
Informix
Sybase
Microsoft ADO
IBM DB2
ODBC
Berkeley DB
Page 9 / 41
Page 10 / 41
Page 11 / 41
Page 12 / 41
Page 13 / 41
Page 14 / 41
Page 15 / 41
Gnration de formulaires
Le principe est de dcrire les donnes grce un schma puis de laisser les
formulaires se gnrer automatiquement en fonction du schma. Il existe
souvent un lien entre formulaires, schmas et bases de donnes. Pour cette
raison, les bibliothques de gnration de formulaires sont souvent lies
une autre technologie, soit le framework lui-mme, soit la base de donnes
ou une abstraction sur la base de donnes. Voici quelques exemples de
bibliothques matures utilisables en production : z3c.form (Zope),
FormAlchemy (SQLAlchemy), tw.forms (TurboGears), gnue-forms (GNUe).
Authentification / autorisation
La cration dynamique des pages HTML est prise en charge par ce qu'on
appelle un outil de templating. Le principe est d'insrer du contenu en
plaant dans les pages HTML soit des balises spcifiques, soit des attributs
XML. Tous les frameworks de dveloppement web proposent un ou plusieurs
outils de ce genre (dont les noms sont ZPT, Mako, Genshi, Chameleon, et
d'autres).
Gestion du cache et des sessions
Page 16 / 41
NumPy
NumPy est l'outil de base pour faire du
calcul scientifique en Python. Il offre
notamment des capacits de calcul sur
des matrices N dimensions, des
capacits d'intgration avec C/C++ et
Fortran, de l'algbre linaire, des
transformes de Fourier et des outils de
calcul alatoire. NumPy permet de
travailler sur des trs gros jeux de
donnes en minimisant la consommation
mmoire (calcul sur des sous-matrices,
sans duplication). Les algorithmes de calcul sont implments en C et
fortement optimiss.
SciPy
SciPy est construit au dessus de NumPy et offre un vaste
ensemble d'outils et d'algorithmes pour les mathmatiques,
le calcul scientifique et l'ingnierie : calculs matriciels,
polynomiaux, algbre linaire, traitement du signal,
statistiques, algorithmes gntiques, machine learning, etc.
Page 17 / 41
Matplotlib
Matplotlib
est
une
bibliothque de
trac
et
visualisation produisant des graphiques de qualit
professionnelle. Les graphiques peuvent tre
produits dans diffrents formats de sortie, y
compris des formats interactifs permettant une
interaction la souris, intgrables dans une
interface graphique. Matplotlib peut tre utilis
soit depuis un programme en Python, soit depuis
un terminal de commande interactif. De trs
nombreux types de graphiques peuvent tre
gnrs. Par dfaut il s'agit de graphiques en 2D et des extensions
permettent de produire des cartographies, graphiques en 3D ou des grilles
de donnes.
Scikit Learn
Construit partir des trois outils prcdents,
Scikit Learn est un ensemble de bibliothques et
d'algorithmes
ddis
l'apprentissage
automatique, au data mining et l'analyse de
donnes, c'est dire aux problmes de
classification, rgression, clustering, rduction
dimensionnelle, slection de modle, extraction de caractristiques et
normalisation.
Page 18 / 41
MAYAVI
Outil de visualisation interactive de donnes scientifiques,
prvu pour tre intgr avec les diffrentes bibliothques
scientifiques Python (notamment Scipy).
Sage
L'objectif
de
Sage
est
l'tude
des
mathmatiques, lmentaires ou avances,
fondamentales ou appliques. Cela comprend
notamment l'algbre basique, le calcul
infinitsimal, la thorie des nombres, la
cryptographie, le calcul numrique, l'algbre commutative, la thorie des
groupes, la combinatoire, la thorie des graphes, l'algbre linaire exacte et
beaucoup d'autres domaines. Sage est ddi l'enseignement et la
recherche. Son principe est de
rassembler plus d'une centaine
de programmes Open Source
dans une interface unifie, soit
une ligne de commande Python,
soit un notebook accessible
depuis un simple navigateur
web.
Biopython
C'est un framework orient biologie. Il
contient plusieurs modules spcialiss, pour
travailler avec les squences ADN, les
protines qu'elles codent et interagir avec les
principales bases de donnes biologiques en
ligne.
Page 19 / 41
PyMol
PyMol est un systme de visualisation molculaire, un
outil de rendu et un diteur molculaire en 3D, ddi la
visualisation de structures
chimiques, y compris les
structures
cristallines
Autres projets
De trs nombreux autres projets existent, en voici quelques uns :
MMTK : Le Molecular Modelling Toolkit, permet la modlisation et la
manipulation de molcules, grce des algorithmes de simulations
permettant
d'implmenter
facilement
des
simulations
complexes
(trajectoires, codage de protines tape par tape...).
SymPy : un outil pour les mathmatiques symboliques.
Une liste plus complte en anglais se trouve l'adresse suivante :
http://wiki.python.org/moin/NumericAndScientific
Page 20 / 41
5. Scripting d'applications
La lgret de Python et ses capacits d'interoprabilit lui permettent d'tre
embarqu directement dans de nombreux logiciels afin d'tre utilis comme
langage de script ou de macro. Quand il n'est pas embarqu, Python est
souvent propos comme mthode de scripting et de pilotage pour des
applications de bureautique ou de graphisme.
En voici quelques exemples.
LibreOffice
La clbre suite bureautique libre peut tre
pilote entirement en Python. Il est donc
possible d'crire des macros en Python pour
raliser
toutes
sortes
de
tches
automatise, de gnrer ou remplir des
documents depuis une base de donnes,
gnrer des factures, etc.
Autodesk Maya
Maya est un modeleur 3d propritaire rput, dvelopp par Autodesk.
Depuis la version 8.5, Maya offre nativement une interface Python aux
commandes Maya et l'API interne.
Blender
Blender est un logiciel de
modelage et d'animation
3D libre et trs puissant, entirement
scriptable en Python, ce qui permet
d'automatiser des traitements, des
crations d'objets ou d'animations
complexes.
Page 21 / 41
Inkscape
Inkscape est un illustrateur vectoriel libre, il est aussi
interfaable avec Python, de l'intrieur ou de l'extrieur
(appel d'un script depuis Inkscape ou communication avec
Inkscape depuis un script).
Gimp
Gimp est un logiciel libre de retouche d'images
possdant de nombreuses fonctions avances. Il inclut de
base un interprte Python, permettant de le scripter et
de raliser des filtres trs puissants.
Page 22 / 41
6. Interfaces Graphiques
Python est fourni par dfaut avec un module TkInter permettant de crer
des interfaces graphiques simples. Pour les besoins plus avancs, il peut
s'interfacer avec plusieurs bibliothques graphiques prsentes plus bas. Le
code cr peut en outre fonctionner de la mme manire sur Windows, Linux,
MacOsX ou n'importe quel autre systme sur lequel la bibliothque utilise
est disponible ! Visuellement il est impossible de diffrencier une application
crite en Python et la mme application crite par exemple en C ou C++ : si
la bibliothque graphique est la mme, le rendu est identique. Le code
source, par contre, sera beaucoup plus facile comprendre et maintenir.
L'utilisation de Python avec ces bibliothques rduit les temps de
dveloppement de manire spectaculaire, sans pnaliser la ractivit des
logiciels.
Page 23 / 41
Page 25 / 41
OpenStack
Openstack est un monumental ensemble de logiciels
consacrs la cration de clouds privs et publics. Il est
devenu en quelques annes la rfrence open-source
internationale en matire de Cloud tel point que des
entreprises comme HP ont investi en 2014 un milliard
de dollars dans cette solution, et qu'il est utilis par
exemple en France comme infrastructure pour offrir des
services de Cloud souverain. OpenStack est crit
majoritairement en Python.
Page 26 / 41
Salt, Ansible
Salt et Ansible reprsentent la nouvelle tendance en
matire d'automatisation d'infrastructure et de cloud. Ils
facilitent
l'automatisation,
le
provisionning,
l'orchestration et la gestion de configuration de parcs
d'applications, de machines
physiques,
de
serveurs
virtuels ou de Clouds en tous genres.
8. Jeux vidos
Le domaine des jeux vidos n'est
pas non plus ignor :
Dans le jeu en ligne massivement
multijoueurs
EVE
online,
Stackless Python a t utilis
pour implmenter le serveur de
jeu, un systme demandant une
approche
hautement
concurrentielle
de
la
programmation et de grandes
performances. La souplesse de
Python permet ici de crer un
design
applicatif
extensible,
adapt un besoin en volution
constante, tout en restant facile
modifier et amliorer dans des dlais brefs. Dans le jeu Civilisation IV, un
jeu de stratgie rinventant l'histoire des civilisations humaines sur plusieurs
milliers d'annes, Python est utilis pour accder de nombreux composants
du jeux, et scripter un certain nombre de fonctionnements.
Il existe galement des moteurs 3D comme les moteurs Panda3D, ou
Soya3d, dont les curs sont respectivement en C++ et Python/Pyrex et avec
lesquels on peut crire des jeux entirement en Python et avec de bonnes
performances.
Page 27 / 41
9. Performances et algorithmique
Apprentissage
La simplicit d'utilisation de Python en fait un langage intressant pour
apprendre l'algorithmique sans tre perturb par des considrations telles
que la compilation, la gestion des pointeurs et de la mmoire ou la matrise
d'outils lis au langage. Juste aprs installation, on peut immdiatement
lancer un interprte et effectuer quelques tests en ligne de commande. ce
stade, mme un diteur de code est inutile.
Maquettage
Raliser un algorithme intensif final en pur Python n'est pas une bonne ide,
mais faire une maquette de cet algorithme en Python en est une excellente.
Cela permet de confirmer ou infirmer une hypothse trs rapidement et
d'viter d'allouer trop de temps ou de ressource quelque chose qui pourra
ventuellement tre abandonn.
Une fois la maquette ralise, il suffit de rcrire uniquement les parties qui
doivent tre accelres dans un langage compil puis de les placer dans un
module Python, ou bien d'utiliser une des techniques ci-dessous qui ont
l'avantage de rester en Python.
Optimisation
Python
tant
un
langage
interprt, il profite pleinement
du fait que le temps d'excution
d'un programme cote beaucoup
moins cher que son temps de
dveloppement : le but est de
crer des programmes le plus
rapidement possible, tout en
restant extrmement lisible et
maintenable.
Page 28 / 41
Nanmoins des besoins d'optimisation peuvent survenir. Pour ce qui est des
performances algorithmiques, Python permet d'exprimer simplement des
algorithmes complexes et de comparer les performances de diffrentes
approches, mais ne sera pas ncessairement la plateforme de choix pour
faire tourner, in fine, lesdits algorithmes.
Diverses approches ont t explores pour offrir des acclrations, sous la
forme d'implmentations alternatives, de compilation just-in-time, de
traduction de code ou simplement d'optimisations.
Voici diffrentes techniques pouvant tre utilises, dont certaines sont
capables d'atteindre les performances du langage C.
Psyco : c'est un mcanisme de compilation just-in-time. Psyco annonce un
gain moyen de 4x, mais pouvant aller jusqu'a 100x, et ne demande aucune
modification du code source. Il ne marche cependant que sur architecture
i386.
Stackless Python : Stackless Python vise amliorer le support du
multiprocesseur en ajoutant des outils de paralllisme au langage : les
tasklets, les channels, un ordonanceur...
PyPy : trs ambitieux et dop un temps par un financement europen, PyPy
est un projet de recherche visant effectuer de la traduction de code et de la
compilation. L'ide directrice est de traduire une description de Python
effectue en Python lui-mme vers des langages de plus bas-niveau. La
rumeur veut que le but recherch est d'aller plus vite que le C. PyPy
commence connatre des retombes intressantes et affiche des
performances souvent meilleures que le Python de rfrence.
Cython : produit des modules C partir du code python, permet de rendre
les types de variables
statiques, offrant dans ce
cas
de
grandes
optimisations. C'est l'outil
parfait pour acclrer les
zones d'un programme
qui doivent absolument
tre rapides.
Voici un bref graphique
comparatif de quelques
benchmarks,
afin
de
visualiser les diffrences
potentielles
entre
les
solutions mentionnes ci-dessus. L'unit est le temps mis par CPython sur
chaque algorithme.
Page 29 / 41
On constate que les possibilits d'acclration d'un code sont normes avec
Psyco qui est probablement l'une des solutions les plus efficaces
actuellement. Stackless Python trouve tout son intrt lors d'criture
d'applications multithread.
3. Outils de qualit et
d'industrialisation
Par dfaut et dans l'esprit, Python n'oblige pas les dveloppeurs utiliser des
outils lourds et contraignants, un simple diteur de texte et un terminal sont
suffisants pour dvelopper des applications de toutes tailles, y compris les
plus importantes. La courbe d'apprentissage est ainsi beaucoup plus douce
que dans d'autres environnements.
Nanmoins tous les outils sont prsents pour s'adapter aux gots de chacun,
aux pratiques modernes ainsi qu'aux contraintes industrielles. Cette section
prsente des outils qui doivent tre mis en place pour amliorer la qualit
des projets, l'intgration continue ou la ractivit des quipes.
3.Outils d'industrialisation..................................................................33
1.Index gnral des paquets Python...........................................................................
Python........................................................................... 34
2.Construction d'applications.....................................................................................
d'applications..................................................................................... 35
3.Dploiement d'applications......................................................................................
d'applications...................................................................................... 35
4.Tests automatiss et documents.............................................................................
documents............................................................................. 35
5.Qualit du code........................................................................................................
code........................................................................................................ 37
6.Intgration continue................................................................................................
continue................................................................................................ 38
7.Gnration de documentation..................................................................................
documentation.................................................................................. 39
8.Environnements de dveloppement intgrs...........................................................
40
intgrs...........................................................40
9.Dpts de code source.............................................................................................
source............................................................................................. 40
10.Forges de dveloppement......................................................................................
dveloppement...................................................................................... 41
Page 30 / 41
Page 31 / 41
2. Construction d'applications
Une application se compose gnralement d'un assemblage de produits, de
paquets, de bases de donnes, de bibliothques, de code source spcifique,
ou de configuration. Pour assembler tous ces lments de manire
automatique et rptable, il est possible d'utiliser un outil de construction.
Buildout en fait partie et est trs utilis dans le milieu du web. Il se base sur
une succession de recettes , chaque recette tant responsable d'une partie
de l'application, par exemple la mise en place de la base de donnes ou d'un
distributeur de charge. Les recettes sont elles-mmes distribues sous forme
de paquets Python et sont disponibles pour tous. Un unique fichier de
configuration de quelques dizaines de lignes est suffisant pour dcrire et
construire une application complexe en puisant dans diverses sources.
3. Dploiement d'applications
Le dploiement s'automatise facilement, soit en utilisant l'outil Buildout
mentionn dans le paragraphe prcdent, ventuellement en gnrant une
archive ou un paquet systme contenant l'application. Des outils additionnels
comme Fabric peuvent tre utiliss pour automatiser des tches
simultanment sur plusieurs serveurs. Pour des cas plus complexes, Salt peut
avantageusement tre utilis pour effectuer des dploiements et
configurations en parallle.
Page 32 / 41
En voici un exemple :
Voici comment utiliser la classe `Ham` avec ses attributs
et ses mthodes. On peut crer une instance de la classe et modifier ses
attributs :
>>>
>>>
>>>
>>>
Ensuite on peut calculer la moyenne des valeurs grce une mthode `mean` :
>>> ham.mean()
3.0
garantie de non-rgression
Page 33 / 41
5. Qualit du code
Analyse automatique : comme dj mentionn dans le premier chapitre, un
code Python doit prfrablement suivre un ensemble de conventions de
codage (dfinies dans le document PEP-8). En plus de ces conventions, il est
possible de dfinir un ensemble de rgles spcifiques un projet, ou de
contraintes supplmentaires sur le code. Des outils d'analyse du code sont
dans ce cas utiles pour vrifier ces rgles, et dfinir un ensemble de
mtriques de qualit respecter. Ces mtriques peuvent alors tre vrifies
en mme temps que les tests unitaires.
Parmi les outils d'analyse automatique du code, on peut citer Pylint, PyFlakes
Flake8 ou PyChecker. Ces outils sont capables de dtecter des problmes
potentiels dans le code, un manque de documentation, un non-respect des
conventions, des imports inutiles, des morceaux de code jamais excuts, etc.
Des indicateurs supplmentaires existent pour dtecter par exemple des
problmes de conception, mesurer la complexit cyclomatique du code, ou
trouver des redondances potentielles.
Analyse
humaine :
l'analyse
humaine se pratique notamment
grce des outils de revue de
code. L'application Review Board,
crite
elle-mme en Python
(Django), prend en charge cette
fonctionnalit : au travers d'une
interface web conviviale, le code
source peut tre comment, toute
modification peut tre soumise
approbation avant ou aprs
propagation dans le dpt.
Analyse alatoire : les outils de
fuzzing peuvent dtecter des
bugs ou des problmes de
scurit
en
soumettant
au
programme des donnes invalides gnres alatoirement, ou gnres
partir de donnes valides dont quelques bits ont t modifis alatoirement.
Plusieurs outils de ce genre sont crits en Python, l'un d'entre eux (Fusil) est
capable de tester n'importe quel programme et a mme servi dtecter des
problmes dans de nombreux logiciels tels que Gimp, PHP ou Python luimme.
Page 34 / 41
6. Intgration continue
Pour amliorer la qualit et la
ractivit d'un dveloppement, on
peut mettre en place un robot qui
lance
les
tests
unitaires
et
fonctionnels automatiquement, de
manire priodique ou de manire
synchrone ds qu'une modification
est effectue sur le code. L'quipe
peut tre ainsi avertie immdiatement et sans intervention humaine.
L'un des outils les plus utiliss est
BuildBot, un robot d'intgration
continue crit en Python. Cet outil est
trs souple. Un ensemble de clients
BuildBots peut tre lanc sur
diffrentes machines, par exemple un
Windows 32bits, un Linux 64bits, et
renvoyer les informations un
serveur Buildbot qui affiche un
tableau rcapitulatif de tous les tests
et de leurs rsultats. En mme temps
que les tests unitaires, le BuildBot
peut excuter et publier les analyses
de qualit de code. En fonction de ce
rsultat, n'importe quelle action
automatique peut tre entreprise,
comme l'envoi d'un e-mail ou le
hurlement d'un Tuxdrod.
Les mtriques de qualit peuvent
aussi tre recueillies par des outils
comme
Bitten
pour
faciliter
l'intgration continue. L'intrt de Bitten est qu'il s'intgre dans la forge
Trac, pour rapprocher les mtriques qualit de la gestion des tickets, la
documentation ou le code source.
Page 35 / 41
7. Gnration de documentation
L'univers Python utilise une syntaxe commune pour la documentation, les
commentaires de code ou les doctests : le reStructuredText (RST). Le RST a
la particularit d'tre conu pour tre lu directement. Il ne comporte pas
d'lments gnant la lecture tels que les balises ou les dlimiteurs de blocs
(crochets, accolades...), mais est inspir des pratiques intuitives d'criture de
contenu en mode texte pur. Voici un exemple :
Outils d'industrialisation
==========================
Par exemple, les titres de chapitre sont souligns de signes 'egal'
Gnration de documentation
--------------------------Les titres de paragraphe sont souligns de tirets,
l'emphase est indique avec des **toiles** (gras) ou des `quotes`
(italique)
Page 36 / 41
8. Environnements
intgrs
de
dveloppement
Les
dveloppeurs
habitus
aux
environnement
de
dveloppement
intgrs pourront retrouver leurs
marques car il est possible de
travailler notamment avec Eclipse en
utilisant un module nomm PyDev, qui
offre tous les outils classiques d'un
EDI avec une spcialisation pour
Python :
compltion
de
code,
colorisation de syntaxe, analyse et
valuation de code, etc.
D'autres EDI non mentionns ici sont
disponibles, aussi bien libres que propritaires et souvent crits eux-mmes
en Python.
Page 37 / 41
Page 38 / 41
4. Communaut
Le langage Python est dvelopp sur le mode communautaire et n'est pas
dpendant d'une seule entreprise. Il est le rsultat de travaux et de votes
issus
de propositions
d'amliorations
nommes
PEP
(Python
Enhancement Proposal). Au del du langage en lui-mme, la cration et le
support de l'ensemble des outils et bibliothques de l'cosystme est pris en
charge par une communaut internationale constitue d'entreprises,
particuliers, organisations ou associations.
En France, le ct associatif est
anim par l'afpy, au travers de
nombreuses activits :
prsence
aux
salons,
rencontres et confrences :
RMLL
OSDC fr
JDLL
JM2L
Page 39 / 41
5. Conclusion
Les 20 ans d'ge de la plateforme Python lui ont apport une forte maturit
et ont engendr un cosystme trs vari. Cet cosystme est compos de
nombreux acteurs, institutions, indpendants, particuliers, associations, mais
surtout de trs nombreuses entreprises des plus petites aux plus grandes
comme Google ou Microsoft qui ont compris les avantages - agilit,
polyvalence, lisibilit et efficacit - et l'engouement que pouvait apporter ce
langage. Dans de nombreux pays et secteurs, on constate mme une forte
acclration du taux d'utilisation de Python. Tourne vers l'avenir, la
plateforme a galement russi sa modernisation avec la sortie d'une nouvelle
version majeure (3.0 3.4) qui se dbarrasse de certains dfauts de jeunesse.
Or, en dpit d'une bonne industrialisation de ses procds et la prsence de
nombreux outils, Python reste une plateforme extrmement facile aborder
et trs homogne. Cette homognit tire sa source d'une sensibilit propre
la communaut, qui se retrouve dans l'criture de ce qu'on appelle un code
pythonique . Qu'est-ce qu'un code pythonique ? Une premire rponse
existe dans l'interprte Python lui-mme :
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one -- and preferably only one obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Page 40 / 41
6. Licence et diffusion
Cette publication a t initialement rdige par Christophe Combelles et Gabriel Pettier
Alter Way Solutions. Elle est maintenant prise en charge par Anybox et est diffuse sous
licence Creative Commons Attribution-Share Alike 3.0, dont le texte complet se trouve
cette adresse :
http://creativecommons.org/licenses/by-sa/3.0/legalcode
Page 41 / 41