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.

98<br />

Éléments du langage<br />

DEUXIÈME PARTIE<br />

Une première fonction<br />

>>> def home(name):<br />

... print('Bonjour %s' % name)<br />

...<br />

>>> home('Bill')<br />

Bonjour Bill<br />

La définition d’une fonction se fait par le biais du mot-clé def suivi du nom de la<br />

fonction. Suivent des parenthèses qui contiennent les éventuels paramètres de la<br />

fonction puis le caractère : qui délimite le début d’une séquence de code.<br />

Une fonction peut donc être vue comme un bloc de lignes associé à un nom. Cette fonction<br />

devient alors accessible dans le contexte d’exécution par le biais de son nom comme<br />

toute variable. Le code de la fonction définit son propre contexte local d’exécution.<br />

Contexte d’exécution et directive global<br />

Lorsque des variables sont définies dans le code, elles sont placées par l’interpréteur<br />

dans un des deux dictionnaires représentant le contexte d’exécution :<br />

Le premier dictionnaire contient l’ensemble des variables globales et est accessible<br />

par le biais de la primitive globals().<br />

Le second, accessible par la directive locals(), contient l’ensemble des variables<br />

accessibles à un instant donné et est dépendant du contexte.<br />

Lorsqu’elle est invoquée, une variable est recherchée dans le contexte local puis<br />

global, et en dernier recours dans les éléments définis dans le module __builtins__<br />

(ce module fait l’objet d’un chapitre complet dédié à la présentation des primitives).<br />

Lors de sa définition, une variable est insérée :<br />

Dans le contexte local si elle est définie dans un bloc (boucle, fonction...).<br />

Dans le contexte global si elle est définie en dehors de tout bloc.<br />

Ainsi, il est impossible d’affecter directement les variables du contexte global depuis<br />

un bloc.<br />

Contexte d’exécution<br />

>>> name = 'Joe'<br />

>>> def home(name):<br />

... print(locals())<br />

... print('Bonjour %s' % name)<br />

...

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

Saved successfully!

Ooh no, something went wrong!