Python est un langage dynamiquement typé et les indices de type ne sont pas obligatoires. L'interprète Python identifie automatiquement les types d'objets pendant l'exécution du code et permet également aux objets de changer dynamiquement leurs types pendant la durée de vie. Cependant, des indices de type facultatif ont été introduits dans Python 3.5, permettant aux programmeurs d'utiliser des conseils de type s'ils le souhaitent.
Notez que contrairement à d'autres langages de programmation, l'interprète Python lui-même n'applique pas les indices de type facultatif car il les considère comme des indices uniquement. Vous devrez utiliser des modules tiers ou des plugins d'éditeur de texte pour appliquer un type de vérification strict en python.
Pourquoi utiliser des conseils de type?
Le type indique des types d'objets explicitement et ils réduisent l'ambiguïté du code. Ils facilitent beaucoup la logique derrière les instructions de code, surtout lorsque la même base de code est travaillée par plusieurs membres d'une équipe. Ils sont également utiles lorsque les bases de code sont accessibles après des intervalles longs car les indices de type facilitent la déduction de la logique sous-jacente. Les conseils de type peuvent faciliter le débogage du code lorsque les problèmes et les plantages se produisent. Cependant, ils augmentent la verbosité dans le code et certains développeurs peuvent ne pas l'aimer car il affecte la syntaxe Python standard qui est beaucoup plus propre. L'utilisation des astuces de type dans les programmes Python peut également être un choix personnel basé sur le style de codage et les modèles. Comme indiqué précédemment, même lorsque vous utilisez des indices de type, l'interprète Python ne les applique pas et vous devrez peut-être installer un module tiers pour permettre une vérification stricte.
Syntaxe et utilisation de base
L'exemple suivant montre des astuces de type utilisés pour un objet de type «int» dans Python:
Def Square (numéro: int) -> int:La première instruction définit une fonction appelée «carré». Il prend un argument obligatoire appelé «numéro» et calcule son carré. L'indice de type pour l'argument du nombre est défini comme «int» en utilisant le symbole «:» (colon) tandis que le type indice pour le type de retour est à nouveau défini comme «int» en utilisant un symbole «->» (flèche).
Sans indices de type, la même fonction serait définie comme suit:
Def Square (numéro):Vous obtiendrez la sortie suivante après avoir exécuté les deux échantillons de code indiqués ci-dessus:
25Si vous souhaitez simplement attribuer un indice de type à une variable au cours de sa déclaration, utilisez la syntaxe suivante:
var1: str = "String"Vous pouvez attribuer des astuces de type aux variables avant «=» Signe égal. Comme expliqué ci-dessus, les noms d'objets et les indices de type doivent être séparés par un symbole «:» (colon).
L'interprète Python n'applique pas les conseils de type. Donc, si vous modifiez le type d'objets en tout autre type aléatoire disponible dans Python, vous obtiendrez le même résultat tant que la logique elle-même ne lance pas une erreur. Voici un exemple de code:
Def Square (numéro: float) -> str:Ici, l'argument numérique est de type «flotteur». La fonction «carré» renvoie désormais un objet de type «str». Cependant, ces deux types ne sont pas appliqués et vous obtiendrez «25» comme sortie et la valeur retournée sera de type «int». Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:
25En utilisant des alias types
Pour définir des conseils de type pour des objets complexes contenant plusieurs types ou des types d'objets personnalisés, vous pouvez utiliser des alias de type. L'exemple de code suivant montre l'utilisation des alias types:
IntegerList = list [int]Dans la première instruction, un nouvel alias de type appelé «Integerlist» est défini en lui attribuant un type. La définition de type peut être simple ou complexe contenant plusieurs types. Ensuite, cet alias type est ensuite utilisé dans la fonction carrée et il est affecté à l'argument principal et à la valeur de retour. La fonction carrée renvoie désormais le carré de chaque numéro dans une liste. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:
[25, 36, 49]En utilisant un indice de type «n'importe quel»
Le type «n'importe quel» peut être utilisé pour annoter les variables, les arguments et les types de retour avec n'importe quel type indice. Les objets avec un indice de type «n'importe quel» peuvent être une chaîne, un entier, un flotteur ou tout autre type valide en Python. Voici un exemple:
de la saisie d'importationLa première instruction importe un type «n'importe quel». Le module de frappe fournit une prise en charge des astuces de type dans les programmes Python et vous devez importer certains types à partir de celui-ci afin de les utiliser. Ensuite, au lieu d'utiliser STR, int, Float ou tout autre indice de ce type, «n'importe quel» est utilisé pour indiquer que la variable peut être de n'importe quel type de son vivant. Notez que les indices de type ne sont toujours pas appliqués dans Python sans utiliser de bibliothèque tierce.
Utilisation d'un module tiers pour vérifier les conseils de type
MyPy est l'un des modules de vérification de type les plus utilisés disponibles pour Python. Vous pouvez l'utiliser pour trouver des erreurs de type indice de type dans vos programmes Python. Vous pouvez l'installer dans Ubuntu et d'autres distributions Linux du gestionnaire de packages PIP. Pour ce faire, exécutez l'une de ces commandes:
$ pip install mypy
$ pip3 installer mypy
Une fois MYPY installé dans votre système Linux, vous pouvez vérifier les problèmes de vérification des types stricts dans un programme Python en exécutant une commande dans le format suivant:
$ mypy programme.py
Notez que MyPy n'est qu'un outil pour vérifier la vérification stricte. Il exécutera un rapport sur votre programme Python et vous montrera des erreurs de vérification. Cependant, vous pourrez toujours exécuter normalement des programmes Python (avec ou sans indice de type) et aucune erreur de l'indice de type ne sera lancé pendant l'exécution. Considérez l'échantillon de code suivant:
Def Square (numéro: int) -> int:Cet échantillon de code est identique à l'un des exemples expliqués ci-dessus. En supposant qu'il réside dans un «principal.Fichier py », vous pouvez vérifier les astuces de type à l'aide de myPy en exécutant la commande suivante:
$ mypy Main.py
Après avoir exécuté la commande ci-dessus, vous devriez obtenir la sortie suivante:
Succès: aucun problème trouvé dans 1 fichier sourceSi vous fournissez un objet de type flotteur à l'appel de fonction carré dans le même exemple ci-dessus, MyPy lancera une erreur.
Def Square (numéro: int) -> int:Maintenant, lorsque vous exécutez le fichier en utilisant "Mypy Main.Commande py ”, vous obtiendrez une erreur similaire à ceci:
principal.PY: 26: Erreur: l'argument 1 à "carré" a un type incompatible "float"; «int" attenduCeci est juste un rapport d'erreur qui vous montrera les erreurs de moindre indice. Si vous exécutez les deux échantillons de code mentionnés ci-dessus sans mypy, vous obtiendrez la sortie suivante:
25Cela couvre l'utilisation la plus élémentaire et la plus commune du type indique la syntaxe à Python. Pour plus d'informations sur les astuces de type, l'utilisation avancée et les types personnalisés, reportez-vous à la documentation officielle Python disponible ici.
Conclusion
Les conseils de type dans Python fournissent un moyen systématique de fixer les indicateurs de type aux variables, les fonctions et les classes. Bien que Python lui-même n'applique pas les indices de type, vous pouvez utiliser des modules tiers pour vérifier les conseils de type et les utiliser comme une forme de base de tests pour affirmer le comportement prévu des objets Python dans votre programme. La façon dont le langage de programmation Python est conçu et sa philosophie principale, un type strict vérifiant les indices de type ne peut jamais être implémenté dans la bibliothèque Python standard.