Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
python:bases:variables [2022/08/16 08:40] – phil | python:bases:variables [2022/09/25 10:33] (Version actuelle) – [Plus loin ...] phil |
---|
{{ :suivant.png?nolink&30|}} {{ :retour.png?nolink&30|}} [[:python:accueilpython|{{ :iconemaison.jpg?nolink&30|Sommaire Python et microPython}}]] | [[python:bases:controle|{{ :suivant.png?nolink&30|Les instructions de contrôle}}]] {{ :retour.png?nolink&30|}} [[:python:accueilpython|{{ :iconemaison.jpg?nolink&30|Sommaire Python et microPython}}]] |
| |
===== Python - Variables, types numériques et entrées / sorties dans la console ===== | ===== Python - Variables, constantes, types numériques et entrées / sorties dans la console ===== |
| |
[Mise à jour le : 19/7/2021] | [Mise à jour le : 16/8/2022] |
| |
* **Sources** | * **Sources** |
| |
=== 1.2 Déclaration et initialisation === | === 1.2 Déclaration et initialisation === |
<callout type="warning" icon="true">En Python, la simple **déclaration** d'une variable ne suffit pas à la créer. Après avoir choisi son nom, il est nécessaire de lui **affecter** une **valeur initiale** (**initialisation**). En Python l'**affectation** s'effectue avec le symbole "**=**".</callout> | <callout icon="fa fa-hand-stop-o" color="red" title="ATTENTION">En Python, la simple **déclaration** d'une variable ne suffit pas à la créer. Après avoir choisi son nom, il est nécessaire de lui **affecter** une **valeur initiale** (**initialisation**). En Python l'**affectation** s'effectue avec le symbole "**=**".</callout> |
| |
<code python exvar1.py> | <code python exvar1.py> |
| and | or | not | | | and | or | not | |
| |
<note important>Les variables booléennes prennent les valeurs **True** et **False** ou **1** et **0**</note> | <callout type="warning" icon="true">Les variables booléennes prennent les valeurs **True** et **False** ou **1** et **0**.</callout> |
| |
//Exemples// | //Exemples// |
| **&** | **|** | **~** | **^** | **<<** | ** >>** | | | **&** | **|** | **~** | **^** | **<<** | ** >>** | |
| |
<note important>Les opérateurs de niveau bit s'appliquent sur chacun des **bits** d'un mot. \\ Exemple si A = a<sub>1</sub>a<sub>0</sub> et B = b<sub>1</sub>b<sub>0</sub> alors C = A & B => C = c<sub>1</sub>c<sub>0</sub> tel que c<sub>1</sub> = a<sub>1</sub>&b<sub>1</sub> et c<sub>0</sub>=a<sub>0</sub>&b<sub>0</sub></note> | <callout type="warning" icon="true">Les opérateurs de niveau bit s'appliquent sur chacun des **bits** d'un mot. \\ Exemple si A = a<sub>1</sub>a<sub>0</sub> et B = b<sub>1</sub>b<sub>0</sub> alors C = A & B => C = c<sub>1</sub>c<sub>0</sub> tel que c<sub>1</sub> = a<sub>1</sub>&b<sub>1</sub> et c<sub>0</sub>=a<sub>0</sub>&b<sub>0</sub></callout> |
| |
//Exemples// | //Exemples// |
Par défaut, les nombres entiers saisis ou affichés sont en base 10. | Par défaut, les nombres entiers saisis ou affichés sont en base 10. |
| |
<callout type="primary" icon="trie">Pour manipuler des séquences de bits, de longueur arbitraire on utilise **0b** devant la valeur binaire ou **0x** devant la valeur hexadécimale.La fonction **bin**(**n**) renvoie la valeur de n en binaire. La fonction **hex**(**n**) renvoie la valeur de n en hexadécimale. Ces fonctions renvoient des chaînes de caractères.</callout> | <callout type="primary" icon="true">Pour manipuler des séquences de bits, de longueur arbitraire on utilise **0b** devant la valeur binaire ou **0x** devant la valeur hexadécimale.La fonction **bin**(**n**) renvoie la valeur de n en binaire. La fonction **hex**(**n**) renvoie la valeur de n en hexadécimale. Ces fonctions renvoient des chaînes de caractères.</callout> |
| |
//Exemples// | //Exemples// |
| |
=== 1.8 Portée des variables === | === 1.8 Portée des variables === |
> La **portée** d'une variable est la portion de code source où elle est accessible. | La **portée** d'une variable est la portion de code source où elle est accessible. |
| |
<note important>Pour connaître la portée d'une variable on utilise la règle **LEGB** : \\ **L**ocalement (variable déclarée dans une fonction) \\ **E**nglobante (variable déclarée dans une fonction qui contient la fonction où elle est appelée) \\ **G**lobalement (variable déclarée globalement) \\ **B**uiltins (est une variable Built-in)</note> | <callout type="warning" icon="true">Pour connaître la portée d'une variable on utilise la règle **LEGB** : \\ **L**ocalement (variable déclarée dans une fonction) \\ **E**nglobante (variable déclarée dans une fonction qui contient la fonction où elle est appelée) \\ **G**lobalement (variable déclarée globalement) \\ **B**uiltins (est une variable Built-in)</callout> |
| |
* **Espace local** | * **Espace local** |
<note warning>Les variables définies dans un corps de fonction ou passées en paramètres sont seulement accessibles dans le corps de la fonction.</note> | <callout icon="fa fa-hand-stop-o" color="red" title="ATTENTION">Les variables définies dans un corps de fonction ou passées en paramètres sont seulement accessibles dans le corps de la fonction.</callout> |
| |
//Exemple// | //Exemple// |
</code> | </code> |
| |
//Résultat attendu// | //Résultat attendu// \\ |
| Avant l'appel de func, valext = 5 \\ |
| Dans la fonction func, valext = 5 \\ |
| Dans la fonction func, valint * 2 = 10 \\ |
| Après l'appel de func et l'opération valext = func(valext), valext = 10 car valint <- valext lors de l'appel \\ |
| **Une exception s'est produite : NameError** \\ |
| **name 'valint' is not defined** \\ |
| |
> Avant l'appel de func, valext = 5 | <callout icon="fa fa-hand-stop-o" color="red" title="ATTENTION">Une fonction ne peut pas modifier la valeur d'une variable extérieure à son espace local par une affectation.</callout> |
> Dans la fonction func, valext = 5 | |
> Dans la fonction func, valint * 2 = 10 | |
> Après l'appel de func et l'opération valext = func(valext), valext = 10 car valint <- valext lors de l'appel | |
> **Une exception s'est produite : NameError** | |
> **name 'valint' is not defined** | |
| |
<note warning>Une fonction ne peut pas modifier la valeur d'une variable extérieure à son espace local par une affectation.</note> | |
| |
* **Variable globale** | * **Variable globale** |
| |
<note warning>Pour modifier une variable extérieure à une fonction, on la qualifie de **globale**.</note> | <callout icon="fa fa-hand-stop-o" color="red" title="ATTENTION">Pour modifier une variable extérieure à une fonction, on la qualifie de **globale**.</callout> |
| |
//Exemple// | //Exemple// |
print("Après l'appel de func, valext = ", func()) | print("Après l'appel de func, valext = ", func()) |
</code> | </code> |
| |
| |
==== 2. Entrée / sortie dans la console ==== | ==== 2. Entrée / sortie dans la console ==== |
> Il est fréquent qu'un utilisateur ait besoin de saisir des informations lors de l'exécution d'un programme. Les fonctions **print()** et **input()** permettent d'interragir avec l'utilisateur dans la console. | Il est fréquent qu'un utilisateur ait besoin de saisir des informations lors de l'exécution d'un programme. Les fonctions **print()** et **input()** permettent d'interragir avec l'utilisateur dans la console. |
| |
=== 2.1 Afficher le contenu des variables === | === 2.1 Afficher le contenu des variables === |
</code> | </code> |
| |
<callout type="primary" icon="trie">Par défaut l'instruction **print** provoque un retour à la ligne après l'affichage. On peut changer ce comportement en fournissant une autre chaîne de caractère à accoler à l'affichage comme ci-dessus ou même rien.</callout> | <callout type="primary" icon="true">Par défaut l'instruction **print** provoque un retour à la ligne après l'affichage. On peut changer ce comportement en fournissant une autre chaîne de caractère à accoler à l'affichage comme ci-dessus ou même rien.</callout> |
| |
// Exemple // | // Exemple // |
| |
---- | ---- |
| |
| ==== 3. Constantes ==== |
| |
| {{ :python:bases:realpython.png?nolink|}} |
| * **Real Python** : <html><a href="https://realpython.com/python-constants/" target=_blank">Python Constants: Improve Your Code's Maintainability</a></html> |
| |
==== Résumé ==== | ==== Résumé ==== |
| |
==== Plus loin ... ==== | ==== Plus loin ... ==== |
| * <html><a href="https://realpython.com/python-numbers/" target="_blank">Numbers in Python</a></html> |
| * <html><a href="https://realpython.com/python-boolean/#the-in-operator" target="_blank">Python Booleans: Optimize Your Code With Truth Values</a></html> |
* <html><a href="https://realpython.com/python-namespaces-scope/" target="_blank">Namespaces and Scope in Python</a></html> | * <html><a href="https://realpython.com/python-namespaces-scope/" target="_blank">Namespaces and Scope in Python</a></html> |
| |