formations/algo/poo/cours/annexes/ConstructionParFermeture.txt

27 lines
1.0 KiB
Plaintext

Fermetures
-----------
.. glossary::
fermeture
Dans un langage de programmation, une fermeture ou clôture (en anglais : closure) est une fonction accompagnée de son environnement lexical. L'environnement lexical d'une fonction est l'ensemble des variables non locales qu'elle a capturé, soit par valeur (c'est-à-dire par copie des valeurs des variables), soit par référence (c'est-à-dire par copie des adresses mémoires des variables)1. Une fermeture est donc créée, entre autres, lorsqu'une fonction est définie dans le corps d'une autre fonction et utilise des paramètres ou des variables locales de cette dernière. cf : https://fr.wikipedia.org/wiki/Fermeture_(informatique)
.. code-block:: python
>>> def start_at(x):
... def increment_by(y):
... return x + y
... return increment_by
...
>>> closure1 = start_at(1)
>>> closure2 = start_at(2)
>>> closure1(1)
2
>>> closure2(1)
3
With closures, class based programming is syntactic sugar.
https://en.wikipedia.org/wiki/Closure_(computer_programming)