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.

104<br />

Éléments du langage<br />

DEUXIÈME PARTIE<br />

ASTUCE Utiliser la notation arbitraire<br />

Il est possible d’utiliser la notation arbitraire dans des fonctions à paramétrage classique en fournissant<br />

une séquence comme valeur. La séquence sera décompressée en une liste de paramètres.<br />

>>> def sum(a, b, c):<br />

... return a + b + c<br />

...<br />

>>> elements = [1, 3, 5]<br />

>>> sum(*elements)<br />

9<br />

Ainsi, une fonction sera toujours sous la forme indiquée ci-dessous.<br />

Forme d’une fonction<br />

def nom_fonction(a, b, c, ..., *arbitraires, **explicites)<br />

Collisions de paramètres<br />

Une fonction peut donc utiliser trois types de paramétrages et les combiner. Il faut<br />

cependant prendre garde aux collisions possibles : un paramètre doit rester unique<br />

dans l’ensemble des paramètres fournis. En cas de doublons, une exception<br />

TypeError est retournée.<br />

Collisions de noms<br />

>>> def display(a, **kw):<br />

... print('a: %s' % a)<br />

... for name, value in kw.items():<br />

... print('%s: %s' % (name, value))<br />

...<br />

>>> display(12, a=2, b=3, c=4)<br />

Traceback (most recent call last):<br />

File "", line 1, in ?<br />

TypeError: display() got multiple values for keyword argument 'a'<br />

Signatures multiples de fonctions<br />

La signature d’une fonction est représentée par la liste de ses paramètres. Certains<br />

langages proposent des systèmes de surcharge pour permettre au développeur de<br />

définir plusieurs fois la même fonction avec des signatures différentes. C’est le rôle de<br />

la directive overload en Delphi par exemple.<br />

Les combinaisons infinies de paramétrage de fonction offertes par Python répondent<br />

beaucoup plus simplement à ce problème de signature multiple.

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

Saved successfully!

Ooh no, something went wrong!