17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Bonnes pratiques et optimisation du code<br />

CHAPITRE 13<br />

La même remarque est valable pour les chaînes formatées : la technique n’apporte<br />

plus de gain de vitesse. Il est cependant conseillé de conserver l’écriture formatée,<br />

beaucoup plus lisible, voire d’adopter dans certains cas une écriture encore plus explicite,<br />

basée sur la substitution des éléments par dictionnaire.<br />

Formatage<br />

>>> nom = 'bob'<br />

>>> phrase = 'bonjour ' + nom + ' comment va ?'<br />

>>> phrase<br />

'bonjour bob comment va ?'<br />

>>> phrase = 'bonjour %s comment va ?' % nom# écriture à préférer<br />

>>> phrase<br />

'bonjour bob comment va ?'<br />

>>> elements = {'nom': 'bob'}<br />

>>> phrase = 'bonjour %(nom)s comment va ?' % elements # plus explicite<br />

'bonjour bob comment va ?'<br />

Remplacer certains tests par une gestion d’exception<br />

Lorsqu’un test coûteux doit être mis en place dans une boucle pour gérer un cas rarissime,<br />

il est intéressant lorsque c’est réalisable, de passer la gestion de ce cas en exception.<br />

On évite ainsi un appel systématique au test.<br />

Gestion d’un cas par exception<br />

>>> def func1():<br />

... res = 0<br />

... elements = [i for i in range(100000)]<br />

... elements.append(None)<br />

... elements.append('og')<br />

... for element in elements:<br />

... if element isnot None and isinstance(element, int):<br />

... res += element<br />

... return res<br />

...<br />

>>> def func2():<br />

... res = 0<br />

... elements = [i for i in range(100000)]<br />

... elements.append(None)<br />

... elements.append('og')<br />

... for element in elements:<br />

... try:<br />

... res += element<br />

... except TypeError:<br />

... pass<br />

... return res<br />

445

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!