Introduction au thème « Polymorphisme cryptographique » **Le polymorphisme** (du grec polý - « beaucoup » et morphe - « forme ») en programmation est une propriété d'une fonction qui lui permet d'être utilisée dans différents contextes sans changer son comportement . Ainsi, une fonction d'un type peut être utilisée pour être appelée dans un autre type, tout en conservant sa signification sémantique originale. Une condition nécessaire pour qu’une fonction soit utilisée comme fonction non-référence (externe) est l’encapsulation. Si l’on accède directement au code fonction, on dit alors qu’il est en code sphérique. La fonction peut également être utilisée avec les modificateurs `__init__`, `__new__` et `__call__` - ce sont des propriétés du décorateur `@staticmethod` et `@classmethod`. Dans ce cas, on peut parler de « statiquement polymorphe » ou de « classe-polymorphe ».
Par exemple, la fonction de calcul de la racine carrée : ``` def sq_root(x) : return x ** 0.5 ``` et la fonction de calcul de la fonction parabolique :
```py def parabola(coefs) : coefficients de fonction y = ax^2 + bx + c pass ``` les deux fonctions peuvent être utilisées dans un programme, à l'intérieur d'une fonction et/ou d'une classe, avec le même succès. Ils acceptent des arguments, une valeur de retour et conservent de la même manière le comportement du code source dans leur corps. Du fait de leur mise en œuvre, ils peuvent être considérés comme des fonctions, c'est-à-dire