17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Bonnes pratiques et optimisation du code<br />

CHAPITRE 13<br />

>>> timeit.Timer('code_appelant1()', 'from __main__ import<br />

code_appelant1').timeit(100000)<br />

9.484644889831543<br />

>>> timeit.Timer('code_appelant2()', 'from __main__ import<br />

code_appelant2').timeit(100000)<br />

6.5702319145202637<br />

Cette technique a cependant tendance à rendre le code de moins en moins lisible et<br />

de plus en plus difficile à maintenir et faire évoluer, car les fonctions agrégées peuvent<br />

devenir de gros blocs monolithiques illisibles.<br />

Une autre technique pour minimiser les appels sans modifier les fonctions appelées<br />

consiste à définir des variables locales qui pointent sur chacun des éléments extérieurs.<br />

Variables locales de fonctions<br />

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

... titres = ['qui veut la peau de mes 64 bits ?',<br />

... 'ali baba et les 40 valeurs',<br />

... 'placer ici un titre de film']<br />

... liste = []<br />

... for titre in titres:<br />

... liste.append(str.title(titre))<br />

... return liste<br />

...<br />

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

... titres = ['qui veut la peau de mes 64 bits ?',<br />

... 'ali baba et les 40 valeurs',<br />

... 'placer ici un titre de film']<br />

... title = str.title<br />

... liste = []<br />

... append = liste.append<br />

... for titre in titres:<br />

... append(title(titre))<br />

... return liste<br />

...<br />

>>> import timeit<br />

>>> o = timeit.Timer('func1()', 'from __main__ import func1')<br />

>>> o.timeit()<br />

7.7832179069519043<br />

>>> o = timeit.Timer('func2()', 'from __main__ import func2')<br />

>>> o.timeit()<br />

6.7249960899353027<br />

L’écriture est encore une fois beaucoup moins explicite et ce genre de modification<br />

est à utiliser avec parcimonie.<br />

447

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

Saved successfully!

Ooh no, something went wrong!