Variables en Python

Python est un langage a typage dynamique !!!


Première formation dans tout langage informatique,

Les variables :



Et déjà python permet soit de s'en tenir au niveau le plus bas sans chercher a gratter, soit de regarder de plus pres À tous les niveaux !!!Comme dans tous les langages informatiques,les variables sont des noms qui font référence à des valeurs stockées en mémoire. Voici quelques points clés sur leur fonctionnement : Déclaration et assignation : En Python, vous n'avez pas besoin de déclarer le type d'une variable avant de l'utiliser. Vous pouvez simplement c'est le fait de lui assigner une valeur qui va déterminer le type d'une variable.
Par exemple : x = 5 message = "Bonjour"

Typage dynamique

Typage : Python est un langage à typage dynamique, Ce qui signifie que le type d'une variable est déterminé lors de l'assignation de sa valeur. Vous pouvez réassigner une variable à une valeur d'un type différent à tout moment. Par exemple :
!!!!!!!!!x = 5 # x est un entier x = "Bonjour" # x est maintenant une chaîne de caractères !!!!!!!!!!! - --> Ce comportement est la source de tres nombreux bugs de fuites de données quand on développe avec Python


Référence aux objets : En Python, les variables font référence à des objets en mémoire plutôt que de contenir directement des données. Lorsque vous assignez une variable à une valeur, vous créez une référence vers cet objet en mémoire. Par exemple : x = [1, 2, 3] # x fait référence à une liste en mémoire y = x # y fait référence au même objet que x

Noms de variables : Les noms de variables peuvent contenir des lettres, des chiffres et le caractère de soulignement _, mais ils ne peuvent pas commencer par un chiffre. De plus, les noms de variables sont sensibles à la casse, ce qui signifie que maVariable et MaVariable sont deux variables distinctes.

Portée des variables : La portée d'une variable détermine où elle peut être utilisée dans le code. Les variables définies à l'extérieur d'une fonction sont généralement globales, tandis que celles définies à l'intérieur d'une fonction sont locales à cette fonction. Il existe également des variables non-locales qui sont définies dans une fonction mais font référence à des variables dans l'encapsulation la plus proche.

Suppression des variables : Vous pouvez supprimer une variable en utilisant l'instruction del. Cela supprime simplement la référence à l'objet en mémoire, ce qui permet à l'objet d'être récupéré par le ramasse-miettes (garbage collector) si aucune autre référence ne pointe vers cet objet.

En résumé, les variables en Python sont des noms qui font référence à des valeurs en mémoire, et leur comportement est déterminé par le typage dynamique, la portée et la gestion des références aux objets.

--> !!! une fois qu'une variable a pris un type en lui affectant une valeur on peut mettre une autre type de données dans la variable --> En Python, le typage est dynamique, ce qui signifie que le type d'une variable est déterminé lors de l'assignation de sa valeur, et il peut changer au cours de l'exécution du programme. Cela vous permet d'affecter un type de données différent à une variable à tout moment.
---- Voici un exemple : python x = 5 # x est un entier print(type(x)) # Affiche x = "Bonjour" # x est maintenant une chaîne de caractères print(type(x)) # Affiche x = [1, 2, 3] # x est maintenant une liste print(type(x)) # Affiche Dans cet exemple, la variable x prend successivement les types int, str et list en fonction des valeurs qui lui sont assignées. C'est l'une des caractéristiques importantes de Python qui offre une grande flexibilité lors de l'écriture de code. Cependant, cela peut parfois introduire des erreurs si le type de la variable change de manière inattendue, donc il est important de rester conscient de ce comportement lorsque vous développez des applications en Python.

User

Quen pense chatpt ????? wahoo c'est dangereux le typage dynamique en python !!!!br>

Effectivement, la flexibilité du typage dynamique en Python peut être à la fois puissante et potentiellement dangereuse si elle n'est pas utilisée avec prudence. Voici quelques considérations à garder à l'esprit pour éviter les pièges courants :br>

Clarté du code : Bien que le typage dynamique puisse rendre le code concis, cela peut également rendre le code moins explicite sur le type des variables. Utilisez des noms de variables significatifs et des commentaires clairs pour documenter le type d'informations attendues.br>
Tests approfondis : Étant donné que le type d'une variable peut changer dynamiquement, assurez-vous de tester votre code avec une variété de données pour éviter les erreurs potentielles liées au type.

Utilisation responsable : Bien que vous puissiez changer le type d'une variable à tout moment, cela ne signifie pas nécessairement que vous devriez le faire. Essayez de maintenir une cohérence dans votre code et d'éviter les modifications de type excessives, sauf si elles sont nécessaires.br

Validation des entrées : Lorsque vous acceptez des entrées utilisateur ou des données provenant d'une source externe, assurez-vous de valider et de vérifier le type des données pour éviter les erreurs potentielles.

Utilisation de fonctions typées (Python 3.6+) : À partir de Python 3.6, vous pouvez utiliser des annotations de type pour spécifier le type attendu des arguments et des valeurs de retour des fonctions, ce qui peut aider à clarifier l'intention du code et à détecter les erreurs de typage plus tôt.

En suivant ces bonnes pratiques et en restant conscient des implications du typage dynamique, vous pouvez écrire du code Python sûr et efficace.

--> --> rexemple du'utilisation des variables typéées dynamiquement, leurs bienfairs et leur dangereusité

c 'est quoi les fonctions typées en python
ChatGPT
Les fonctions typées (ou "type hints" en anglais) sont une fonctionnalité introduite dans Python 3.5 et améliorée dans les versions ultérieures, principalement dans Python 3.6 et supérieur. Elles permettent aux développeurs d'annoter leurs fonctions avec des informations sur les types des paramètres et des valeurs de retour. Bien que ces annotations ne soient pas strictement vérifiées par l'interpréteur Python lors de l'exécution, elles peuvent être utilisées par des outils d'analyse statique et des linters pour détecter les erreurs de typage potentielles avant même que le code ne soit exécuté.
Exemple simple d'une fonction typée en Python :
def add(a: int, b: int) -> int: return a + b

Dans cette fonction add, les annotations de type (int) indiquent que les paramètres a et b ainsi que la valeur de retour sont tous des entiers (int). Cependant, il est important de noter que ces annotations sont purement facultatives et n'affectent pas le comportement de la fonction en tant que tel. Vous pouvez toujours appeler cette fonction avec des types de données différents sans générer d'erreurs.



L'avantage principal des fonctions typées réside dans leur utilisation avec des outils d'analyse statique, tels que MyPy, Pyre, et d'autres. Ces outils peuvent inspecter les annotations de type dans votre code pour détecter les incohérences de typage et les erreurs potentielles, vous permettant ainsi d'attraper les bugs de typage avant même d'exécuter le code.
En résumé, les fonctions typées en Python sont un mécanisme facultatif pour annoter les types des paramètres et des valeurs de retour des fonctions, ce qui peut faciliter la détection d'erreurs de typage lors de la phase de développement.



-->on peut aussi "typer des variables" en python en utilisant des annotations de type.
Bien que ces annotations ne soient pas obligatoires et n'affectent pas le comportement du programme, elles peuvent être utiles pour documenter le code, améliorer sa lisibilité et faciliter la détection d'erreurs potentielles lors de l'analyse statique avec des outils tels que MyPy.
Un exemple de typage de variables en Python :
python
x: int = 5 y: str = "Bonjour" z: list[int] = [1, 2, 3]

# Modification du type de la variable x = "Chaîne de caractères" # Maintenant x est de type str



Dans cet exemple, nous avons utilisé des annotations de type pour spécifier le type des variables x, y et z.
La syntaxe est similaire à celle des annotations de type pour les paramètres de fonction, avec le nom de la variable suivi de :, puis du type souhaité.

Asavoir que les annotations sont >purement facultatives et n'ont aucun impact sur le comportement du programme. Python reste un langage typé dynamiquement, ce qui signifie que le type des variables est déterminé à l'exécution et peut changer au fil du temps.

Cependant, ces annotations peuvent être utilisées par des outils d'analyse statique pour détecter les incohérences de typage et les erreurs potentielles dans le code, ce qui peut être particulièrement utile dans des projets de grande taille ou lorsque plusieurs développeurs travaillent sur le même code. ---------




--> on resume : pour ceux qui ont l habitude de déclarer les types des variables danc leur programmation, comme on le fait dans les autres langages de programmation, on trouve les types usuels dans python. Mais python est un langaage a typage dynamique. une variable prend son type lorsqu'on lui affecte une valeur. Et ce n 'est pas définitif, une variable peut changer de type a chaque affectation. !!!!! pour le développeur néophite, ce comportement est particulierment dangereux, et resoonsables de tres grands bug de fuites de données et d 'erreurs dans les programmes en python. il faut etre tres rigoureux dans la denomination et "
" et l 'Utilisation' des des variables avec le langage python.
Par exemple, une bonne pratique consiste à dénomer une variable par une lettre associant au type de la variable
's' pour une variable de type string, "s" --> chaine de caractère, 
'i' pour une variabke de type integer "i" --> nombre entier (souvent utulise dans les increments i=i+1 ....)
'f' pour un nombre de type float "f"--> nombre a virgule
....


Dans l exemple ci-dessous au debut la variable a est initialisée avec la valeur 1.
Donc l'instruction print(a*4) --> nou retourne la valeur 4 Ensuite on
caste
la variable a en string (on change son type dynamiquement) avec l'instruction a=str(a)
maintenant l'instruction print(a*4)-->1111 (une string) cette operation sur une variable s'appelle le casting (on la rerouve dans d'autres langages informatiques autres que python, mais python est tres a boutit pour ce genre de manipulations )



pour aller plus loin ont peut regarder l exemple

Nous verrons dans le prochain chapitre avec la notion de blocs de code avec Python et les structures pour manier les blocs de codes(premieres fonctions) une premiere notion
de portabilite des variables "dites" globales et locales".