tag>cours dev python}}
====== Python: Portée des variables ======
Un *bloc de code* est un ensemble ... e ''%%x = 1%%'', on dit que vous définissez votre variable x. Ccette notion de définition veut dire qu'une variable référence un objet. Nous avons plusieurs sy... sés de manière interchangeable. La **portée d'une variable** détermine de quel endroit du code on peut
rtée ======
Précédemment la notion de portée de variable et notamment la règle LEGB qui permet de trouver les variables que l'on référence ont été abordées. Une variable définie dans une fonction est locale à cette... On présente ici **comment modifier la portée des variables avec les instructions global et nonlocal**
sque nous avons parlé de la notion de **portée de variable**, nous avons expliqué que nous pouvions avoir une variable d'un nom donné, par exemple une variable *x*, qui coexiste dans le même fichier à l'intérieur d... iqué que les modules isolaient complètement leurs variables.
Ce **mécanisme d'isolation des variables
rêmement simple puisque c'est l'objet fichier qui va se charger d'encoder et de décoder les chaînes de... built-in open. Créons un fichier donc je fais une variable f qui est égale à open et je vais ouvrir un fichier, alors je vais dire que mon fichier est dans le répertoire *c:\temp\spam.txt*. I
o.
Commençons par créer un fichier `spam.py` qui va uniquement contenir `x = 1`. Et je vais créer un deuxième fichier, `egg.py`, qui contient uniquement ... ces modules, vous pouvez utiliser **l'instruction vars** qui est équivalente à l'**instruction globals... ommage d'un module importé, vous pouvez utiliser `vars` de ce nom de module. Vous pouvez également sim
>>> a = 3
</code>
À gauche, j'ai l'espace de mes variables, que l'on appellera **espace de nommage** ... bjets** créés dans mon programme. Donc **a = 3**, va faire les opérations suivantes:
* Création de ... mps importants, un **compteur de références** qui va représenter le nombre de variables qui référencent cet objet, et un **champ de type**, qui représente
mple qui suit, on l'appelle simplement *f*, et on va lui passer des arguments ( on peut lui passer un ... ère '**:**' après les arguments signifie que l'on va introduire un bloc de code, ce sera le bloc de co... tient une seule instruction, appelant *print* qui va simplement afficher ses trois arguments.
Lorsque... fonction est créé et le nom de la fonction, *f*, va être une variable qui va référencer cet objet fon
les séquences sont numérotées à partir de 0. s[9] va me permettre d'accéder au dernier élément de ma s... on **built-in len**. Donc je fais un len(s) et ça va me retourner que j'ai effectivement dix éléments ... isque je peux faire : est-ce que 'egg' in s et ça va me retourner vrai, effectivement, la chaîne de ca... in s, qui est le test de non appartenance, et qui va me retourner faux, puisque, effectivement, 'egg'
fonction qui prend deux arguments a et b, et qui va juste faire un print de a divisé par b. Absolumen... ons que les divisions par 0 sont impossibles ; je vais donc avoir une erreur d'exécution. Regardons ce... e.
Je vois en effet une erreur d'exécution et on va prendre quelques instants pour la détailler. La d... n'est pas une fatalité, je peux la capturer et on va regarder comment capturer cette exception.
Dans
**. Regardons un exemple pour illustrer cela.
Je vais utiliser l'instruction *timeit*, qui me permet ... uler le temps d'exécution d'une expression, et je vais regarder si la chaîne de caractères 'x' est dans range de 100. En fait, range de 100 va produire des entiers allant de 0 à 99, x n'étant pas dedans, je vais être obligé de parcourir chaque élément pour vé
aractères totalement équivalentes. Maintenant, je vais affecter ma chaîne de caractères à une variable pour pouvoir la manipuler. Les chaînes de caractère... **built-in dir**. Donc, si je fais dir de str, je vais voir toutes les méthodes qui sont associées aux... gardons le résultat. En fait, cette méthode title va simplement mettre chaque mot avec la première let
change en cours d'exécution, la fonction de hash va faire un calcul qui va être différent et par conséquent, votre table de hash va devenir inconsistante. C'est pourquoi en Python a... la notation accolades. Regardons cet exemple. Je vais écrire *age = {}*et j'ai bien créé un objet qui
is que vous appellerez votre classe, votre classe va créer de nouvelles instances. Et vous allez avoir... et la classe**. Ce qui veut dire que l'**instance va pouvoir hériter, observer tous les attributs qui ... "
attr_phrase = 'Je fais un MOOC Python.' # variable de classe partagée par toutes les instances... it un attribut qui s'appelle "attr_phrase" et qui va référencer une chaîne de caractères qui vaut 'Je
odules**, c'est-à-dire les différentes étapes que va suivre l'interpréteur Python du moment où on tape...
# Après interprétation de cette instruction, une variable
# os est disponible elle référence un objet... ction ''import'', ici ''os'' a deux rôles:
- Il va définir le nom du fichier qui va être cherché sur le disque dur, qui va s'appeler ''os.py'' ( la plup
les sets ne stockent qu'une clé, il n'y a pas de valeur correspondante. Alors on peut se demander à q... dictionnaire qui ne stocke que des clés et pas de valeurs. En fait, la raison, c'est que le set est op... calcule le set des éléments d'une séquence, on ne va avoir que les éléments uniques. Une deuxième opér... ace. Commençons par créer un set, un set vide. Je vais le créer avec **la fonction built-in set**. J'a