Vous êtes sur la page 1sur 43

VARIABLE PYTHON VS

LANGAGE C
Les variables en C
Il est à noter qu’une variable Python se diffère d’une variable C.
En C, les variables sont des données stockées en mémoire.
Exemple
Int A, B ;
B = 3 ;
A = B ;
B = 4 ;
Variable
Adresse Mémoire

A : 10214578
B : 10214582 3

Si A et B sont deux variable C alors l’instruction A-B engendre une copie de la valeur de B,
dans l’adresse de A, la même valeur est donc dupliquée et les deux sont stockées dans
adresses différents.
Maintenant la valeur stockée sans l’adresse de B est composée

Les variables Python

Adresse Variable
10214578 B
10214582

adrVar adrObj Adresse Valeur

10214578 97413210 97413210 3


97413210
En Python, une variable est une référence d’objet.
Adresse Variable Adresse Valeur
10214578 B 97413210 3
10214582 97413210

Table de lien
10214578 97413210

Variable et valeur sont stockées dans des mémoires différents. Les variables (références) sont
stockées dans une zone mémoire appelée espace des noms et les valeurs sont stockées dans
l’espace des objets.
Si B est une variable Python, l’instruction B = 3 assigne l’objet 3 au référence B. autrement
dit, lors de l’interprétation de cette instruction, Python crée un lien entre la référence.

Adresse Valeur Table de lien Adresse Valeur


10214578 B 10214578 97413210 97413210 3
10214578 A 10214578 97413210 97413210 4
A la suite de l’instruction A = B, les deux références A et B pointent sur l’adresse du même
objet. Il n’y a pas duplication de la valeur 3
Le fait d’assigner une nouvelle valeur à B, force la référence de pointer sur une autre adresse.
Il n’y a pas modification de la valeur référencée par A.
Assignation vs modification
L’assignation est différente du terme modification. L’assignation est un changement d’adresse
pointé par une variable, mais la modification est un changement du contenu de la zone
mémoire allouée à un objet.

CONCEPT D’OBJET PTYHON


Les objet Python
En Python, on appelle objet les littéraux et les occurrences d’une classe.
Caractéristique d’un objet Python
Tout objet python est caractérisé par son identifiant, son type et sa valeur.

Misy impacte any @ hafa


ny valeur ovaina

Accès à l’identifiant d’un objet


L’accès à l’identifiant d’un objet se fait au moyen de la fonction id ().
Affichage du type d’un objet
L’affichage du type d’un objet se fait avec la fonction

Objet immuable (immutable)


Un objet est dit immuable si on ne peut pas modifier sa valeur. Tel est le cas des objets de
type bool, int, str, byte, tuple, range et frozenset. (Tsy misy impact @hafa)
Remarque
Deux zones de l’espace des objets ont forcément deux valeurs différentes. Donc aucune
redondance de valeur n’a lieu dans l’espace des objets.
Espace des objets
Id 321687312
Type float
Valeur 3,14
id 321687312
type
valeur « Hello ! »

Une valeur appartient à une et une seule zone de l’espace des objets. Donc, si deux variables
ont la même valeur, alors elles pointent forcement une même adresse dans l’espace des objets.
Référence Objet
A « Cahier »
B « Cahier »
La valeur d’un objet immuable est inchangeable, elle reste constante tout au long de sa vie.
L’assignation d’une nouvelle valeur (objet) à une référence (variable) ne modifie pas la valeur
de l’objet qui lui est associée, mais force la référence (variable) à pointer un autre objet d’une
autre adresse.

Référence Objet
B 3
« Cahier »

Exemple

Référence Objet
a 2

A chaque littéral est alloué un et une seule adresse. Lors de l’assignation de valeur à une
variable, un lien est créé entre la référence et l’objet.

Référence Objet
a 2
b 4

Donc, lors de l’apparition d’un nouveau littéral, une nouvelle adresse lui est accordée.

Deux références d’une même valeur pointent forcement sur un même adresse

Référence Référence
a 2
b 4
c

Référence d’un Si aucune référence pointe sur un


Même littéral littéral, l’adresse de ce dernier est
Référence Mémoire automatiquement libéré
a Garbage collector
b 4
c
Conséquence
Les objets de type primitif sont immutables. Par conséquent, si deux références pointent sur
un même littéral, le fait de modifier la valeur associée à l’un d’entre eux n’affecte pas celle
qui est associée à l’autre.

Objet mutable
Un objet est dit mutable si on peut modifier sa valeur. Tel est le cas des listes, des tableaux,
des dictionnaires et des occurrences des classes utilisateurs. Les éléments ou attributs de
ces objets sont modifiables.
Exemple
U et V représentent la même liste
Le fait de modifier les éléments de v entraîne la modification de ceux de u

Il est à noter que l’assignement d’une nouvelle liste à l’un des deux références ne change pas
la liste référence par l’autre variable.
02 le flot d’entrée-sortie
La fonction imput()
Cette fonction affiche à l’écran son paramètre et génère en tant que chaîne de caractère la
valeur entrée au clavier

La fonction print()
Cette fonction prend en paramètre un objet str qui peut contenir des champs de remplacement.
Elle sert à l’affichage à l’écran de l’objet str.

Exemple
Bonjour

Si l’objet str contient au moins un champs de remplacement, les valeurs à afficher à la place
de ces champs sont passées en argument de la méthode format()

Le flot d’entrée/sortie
Exemple

Champ de remplacement
Un champ de remplacement est entourés des accolades {}.
Il sert à formater un objet passée en argument de format ()
Remarque
Tout ce qui n’est pas placé entre deux accolades est considéré comme littéral, et est copié tel
quel dans le résultat. Si les accolades font partie des littéraux, il faut les échapper en les
doublant {{…}}

Syntaxe du champ de remplacement

Contenu d’un champ de remplacement


Argument de format
{} Vide Format(réf|val)
{rang} Rang du paramètre dans la Format(réf|val)
liste des arguments de
format()
{référence} Référence Format(réf=val)
{rang[pos]} Pos : position du caractère Format(chaîne…)
dans une chaîne à afficher
Rang : rang de la chaîne
{rang[infice]} Elément du tableau passé en Format(tableau)
argument de format

{rang[clé]} Elément du dictionnaire Format(dictionnaire)


passé en argument de format
{rang attribut} Attribut de l’objet passé en Format(objet)
argument de format

Cas 01 : l’argument est une liste d’objets, d’expressions ou mixte


Syntaxe :

Exemple 1.1
Un seul argument et un seul champ de remplacement

Exemple 1.2 sans préciser l’ordre d’affichage des arguments

Lorsqu’on laisse vide les champs de remplacements, alors l’affichage se fait dans l’ordre
d’apparition des arguments

Exemple 1.3 préciser l’ordre d’affichage des arguments


Exemple 1.4 Un même argument affiché plusieurs fois

On est obligé de préciser le rang de l’argument à afficher dans les champs de remplacement

Cas 2 : l’argument est une liste d’assignements


Syntaxe

Exemple 2.1 l’argument est une liste d’assignation

Si l’argument de format () est une liste d’assignations, alors on indique dans le champ de
remplacement la référence dont la valeur est à afficher

Remarque
Les arguments de format sont indépendants. Si l’argument de format a plusieurs parties (ie,
formé de plusieurs assignations) alors la variable d’une partie de la liste n’est pas visible dans
les autres parties de la liste d’assignations
Exemple 2.2
Incorrecte

Cas 3 : l’argument est une liste d’objets de type liste


Syntaxe

Exemple 3.1 : l’argument est un objet de type liste

L’accès aux éléments de la liste se fait au moyen de son rang d’apparition dans l’ensemble
des arguments de format () suivit de l’élément à récupérer

Cas 04 : Extraction d’un caractère d’un argument de type chaîne


Syntaxe

Exemple 4.1 : Extraction d’un caractère dans une chaîne


Chaîne se manipulent comme une liste. L’accès aux caractères d’une chaîne se fait au moyen
de son rang d’apparition dans l’ensemble ses arguments suivit de la position du caractère à
récupérer

Exemple 4.2 Accès aux éléments d’une chaîne

Exemple 4.3 Caractère constituant un élément d’un objet liste

Exemple 4.4  l’argument est une liste d’objets de type liste

Cas 05 : l’argument est une liste de dictionnaires


Syntaxe

Exemple 5.1 : l’argument est une liste de dictionnaires

L’accès aux éléments d’un dictionnaire se fait au moyen de son rang d’apparition dans
l’ensemble des arguments de format () suivit de la clé de l’élément à récupérer

Cas 06 : l’argument est une occurrence d’une classe


Syntaxe

Exemple 6.1 : l’argument est une occurrence d’une classe


Attribut : Propriété
Argument : valeur à prendre en paramètre
Attribut d’objet :
Chaîne de caractère : STR
Valeur commun inchangeable = à mettre après class
Attribut de classe = externe (propriété commun)
Attribut d’objet = interne
Cas 7 : convertir l’argument
Syntaxe

Champ de remplacement

Champ Signification Argument de format()


{ !a} Convertir les caractères Format(objet)
spéciaux en leurs codes
ASCII
{ !r} Affiche les constantes Format(objet)
caractères tels quels
(utilisation de repr())
{ !s} Convertir l’argument de Format(objet)
format() en utilisant str()

Exemple 7.1 : convertir un caractère en son code ASCII {rang !a}

Avec la conversion { !a} les caractères accentués du mot « élément sont convertie en leurs
code ASCII noté en Hexadécimal

Exemple 7.2 : non traiter les caractères spéciaux

La conversion { !r} indique à Python de ne pas traiter les caractères spéciaux et de les afficher
tels quels
Exemple 7.3 :

La conversion { !s} traite les constantes caractères et les caractères échappés avant
l’affichage, en faisant appel à la fonction str()

Cas 8 Alignement de l’affichage


Syntaxe

Alignement
Symbole Signification
< Alignement à gauche
> Alignement à droite
^ centrée

Exemple 8.2 : Revenons à l’alignement des textes


Interprétation

Cas 9 : Formatage des entiers


Syntaxe

Signification des paramètres


Paramètre Meaning
Fill Caractère de remplissage
Align Alignement
Sign Affichage des signes
Taille Place allouée pour l’affichage
, Virgule utilisée comme séparateur de millier
#type Type de mise en forme

Spécificateur de format des valeurs entières


Format Meaning
{ :c} Un caractère (chiffre ou lettre)
{ :d} Entier signé
{ :i} Equivalent de { :d}
{ :#o} Affichage en vase 8
{ :#x} Affichage en base 16 (en minuscule)
{ :#X} Affichage en base 16 (en majuscule)
Exemple 9.1

Exemple 9.2 : Remplissage de l’espace vide

Interprétation

Exemple : Affichage des signes


Symbole Signification
+ Affichage des signes +
- Affiche le signe pour les valeurs négatives
uniquement
Espace Affiche le signe pour les valeurs négatives,
mais insère un espace pour les valeurs
positive
Exemple 9.3 : Affichage des signes

Interprétation

Exemple 9.4 : Affichage d’une valeur dans une vase quelconque

Exemple 9.5 : séparateur de millier

Interprétation
Cas 10 : formatage des valeurs décimales
Syntaxe

Spécificateur de format des valeurs décimales


Format Meaning
{ :f} Valeur décimale à virgule flottante
{ :F} Valeur décimale à virgule flottante
{ :e} Notation scientifique(e minuscule)
{ :E} Notation scientifique (E majuscule)
{ :%} Multiplie par 100 le valeur passée en argument de format () et affiche le
symbole %

Exemple 10.1

Interprétation

Exemple 10.2 : fixer la précision


Cas 11 : Transformer une valeur en pourcentage
Syntaxe

Exemple 11.1

operateurs
// : Division entière
% : reste de la division
21 | 4
20 | 5 division entière //
1
Reste %
\ : ou exclusif Valeur binaire
&
<< : Décalage à gauche de n bit avec affichage binaire {:b}   0b code binaire
{} : Agencement de dictionnaire : obj, attribut
() : Agencement de n-uplet : fonction f( ….)
[] : Agencement liste :
Inversion de bit
@ : Produit de 2 matrices
| : Operateur ou
== : test d’égalité
Lambda : simplificateur d’expression
LES OPERATEURS
Introduction au langage python
01_ les opérateurs
Les opérateurs logiques
Opérateur Signification Exemple
Or Opérateur OU X or y
And Opérateur ET X and y
not négation Not x

L’opérateur logique not a une priorité faible par rapport aux autres opérateurs non logiques.
Donc, Python évalue les autres expressions avant d’évaluer la négation avec not.
De ce fait, l’expression suivante entraîne une erreur.

En effet, Python tente d’évaluer tout d’abord le résultat du test d’égalité, avant d’appliquer à
y la négation
Remarque 1
Les valeurs suivantes sont considérées comme false :
 Les constantes None et False
 L’entier 0, la valeur décimale 0.0 et le nombre complexe 0j
 Décimal (0), fraction (0,1)
 Les séquences et collection vide ‘’’’, (), [], {}, set (), range(0)

Les opérateurs de comparaison


Opération Signification
< Strictement inférieur à
<= Inférieur ou égal
> Strictement supérieur à
>= Supérieur ou égal
== Test d’égalité
!= Différent de
Remarque 1
En python, les opérateurs de comparaison ont le même niveau de priorité. Un niveau de
priorité qui se trouve au-dessus de ceux des opérateurs logiques
Remarque 2
Dans une expression les opérateurs de comparaison peuvent s’enchaîner. Ainsi, les
expressions suivantes sont équivalentes

Les opérateurs de comparaison pour les objets


Opération Signification
Is Test si les deux objets ont le même id
Is not Test si les deux objets ont des id différents

Exemple 1.1

Interprétation
Exemple 1.2 :

Interprétation

Exemple 1.3 :

Interprétation
Exemple 1.4 :

Interprétation

Exemple 1.5 :

Interprétation

Test d’appartenance
Opération Signification
In Test si l’objet appartient à une collection
Not in Test si l’objet n’appartient pas à une
collection
Exemple 2.1 :

Interprétation

Exemple 2.2 :

Interprétation

Exemple 2.3 :

Interprétation

Les opérateurs arithmétiques


Opérateur Signification
+ Addition
- Soustraction
* Multiplication
** Puissance
/ Division
// Division entière
% Reste de la division (modulo)
Les opérateurs les séquences : liste, tuple, range
Opérateur Signification
X in c True si X appartient à la collection, False dans le cas contraire
X not in c True si X n’appartient pas à la collection, False dans le cas contraire
C1 + C2 Concaténation des deux collections
C *n ou n*C Concaténation n-fois de la collection C à elle même
C[i] Accès au i-ème élément de la collection
C[i :j] Les éléments de la collection depuis la position i jusqu’à la position j
C[i :j :k] Même que C[i :j] mais avec un pas k
Len(c) Nombre des éléments de c
min(c) Le plus petit élément d’une collection de valeurs numérique
Max(c) Le plus grand élément d’une collection de valeurs numérique
c.count(e) Nombre déoccurence de e dans la collection c
c.index(e.i.j) Position deu premier occurrence de e dans c entre les positions i et j

Les opérateurs bit à bit


Opérateur Signification
x|y Ou bit à bit
x^y Ou exclusive bit à bit
x&y Et bit à bit
x<<n Décalage à gauche de n bits
x>>n Décalage à droite de n bits
~x Complément bit à bit

Exemple 3.1
Exemple 3.2 :

Exemple 3.3 :

Exemple 3.4 :
Exemple 3.5 :

Exemple 3.6 :

Ordre de priorité des opérateurs


Dans le tableau qui suit les opérateurs regroupés entre deux lignes épaisses ont la même
priorité

Ordre de priorité des opérateurs


Symbole Type Evaluation Nom
{} Groupe Agencement de dictionnaire
() Groupe Agencement de n-uplet
[] Groupe Agencement de liste
. Binaire Attribut : obj.attribut
() Groupe Argument de fonction : f(…)
[] Groupe Accès indexé : x[i :j], x[i]
Await Unaire Attente de résultat : await x
** Binaire Puissance
~ Unaire Inversion de bit
+ Unaire Positif
- Unaire Négatif
* Binaire Multiplier
@ Binaire Produit de dux matrices
/ Binaire Division entière
// Binaire Division entière
% Binaire Modulo
Symbole Type Evaluation Nom
+ Binaire Addition
- Binaire Soustraction
<< Binaire Décalage à gauche
>> Binaire Décalage à droite
& Binaire Et logique
^ Binaire Ou exclusif
| Binaire Ou logique
in Binaire Test d’appartenance
not in Binaire Test de non apppartenance
is Binaire Test d’égalité type
is not Binaire Test de non égalité de type
< Binaire Inférieur
> Binaire Supérieur
<= Binaire Inférieur ou égal
>= Binaire Supérieur ou égal
== Binaire Est égal
!= Binaire Est différent
not Unaire Non booléen
and Binaire Et booléen
or Binaire Ou booléen
If…else Ternaire Expression conditionnalle
Lambda Binaire Expression lambda
= Binaire
+=-= Binaire
*=**= Binaire
/=//= Binaire Opérateur d’affectation
@=%= Binaire
<<=>>= Binaire
&=^=|= Binaire

Contrôle de flux d’instructions


20 Contrôle de flux d’instructions
L’instruction if

OUI
Cond
Instructions
NON
L’instruction if…else
OUI
Cond

NON
Instructions 01
Instructions 02

Syntaxe compacte d’une alternative


***

Exemple :

L’instruction if…elif…else
Cond 1

Cond 1

La boucle for Instructions 01 Instructions 02 Default

Instructions 02

Cond 1

Itérateur sur les conteneurs


 Itérateur de d’un dictionnaire :

Donne un objet itérateur contenant la liste des clés du dixtionnaire

Clé no.01 : Code

Clé no.2 : Désignation

Clé no.03 : Prix


 Itérateur de d’un dictionnaire :

Donne un objet itérateur contenant la liste des couples (clés, valeur) du dictionnaire

1-Code : 125

2-Désignation : Cahier

3-Prix : 2000.0

Fonction sur les itérateurs


 Trier les éléments d’un itérateur :

 Créer une liste de couples (val_iter_01, val_iter_2) :


1-Cahier : 2000

2-Stylo : 700

3-Crayon : 1000

4-Gomme : 500

 Inverser l’ordre des éléments d’un itérateur :

Parcourir une chaîne


Instructions

Car in chaîne

Oui
Non

Parcourir une liste

Instructions

Elém in liste

Oui
Non

Parcourir un objet range


Instructions

Elém in range

Oui
Non

Parcourir un objet dictionnaire

Instructions

Key in dIco
Oui
Non

Clé no.01 : code

Clé no.02 : Désignation

Clé no.03 : Prix


Clé no.01 : code

Clé no.02 : Désignation

Clé no.03 : Prix

Valeur no.01 : 125

Valeur no.02 : Cahier


Interrompre une boucle
Valeur no.03 : 2000.0

Arrêt précoce de la boucle si la condition est vérifiée

Court-circuit une boucle

Si la condition est vérifiée, l’instruction ne sera pas évaluée, mais la boucle continue son
exécution
La boucle while

Modification

Instructions

cond
Oui
Non

Les fonctions
Une fonction a
toujours une
return

Exemple :
Interprétation :

Variable globale :
Une variable globale est accessible dans toute partie du programme qui se trouve au-dessus de
sa création. Une variable globale est accessible dans une fonction à condition que la variable
est créé avant l’appel à la fonction

Exemple :

Exemple 2 :

Remarque
On peut utiliser la valeur d’une variable globale à l’intérieur d’une fonction. Mais on ne peut
pas en modifier sa valeur. Afin qu’on a le contrôle total d’une variable globale à l’intérieur
d’une fonction on fait appel au mot clé global

La liste des variables globales est obtenue au moyen de la fonction globals()

Exemple :

Variable locale :
Une variable locale n’est accessible qu’à l’intérieur de la fonction qui porte sa déclaration
Si une fonction porte une variable locale ayant la même identification qu’une variable
globale, alors elle utilise la valeur de sa variable locale
Exemple :

Accès à une globale à l’intérieur d’une fonction


Si une fonction porte une variable locale ayant la même identification qu’une variable
globale, alors elle utilise la valeur de sa variable locale
Pour contourner ce concept, on utilise le mot clé global

Exemple :

Plusieurs retours
L’un des spécificités des fonctions Python est sa faculté à renvoyer en même temps une liste
de valeurs

Exemple :

Alias d’une fonction


Il est à noter que l’identificateur d’une fonction est une référence .Donc le fait d’assigner à
une autre référence l’identificateur d’une fonction permet de créer un alias de la fonction
Exemple :
Tuple : non modifiable
Pasage par dictionnaire : **
Append : continuer une liste
Update : continuer un dictionnaire

20_Passage de paramètre
En python les paramètres sont passés par affectation. Donc paramètres formels sont donc des
copies des paramètres effectifs. Ainsi la modification des paramètres formels n’a aucun
impact sur ceux des paramètres effectifs
Exemple :

Input : passage des objets immuables:


Les objets immuables sont utilisés tout simplement comme input d’une fonction

Output : passage des objets mutables :


Soient u et v deux objets mutables. L’instruction u = v n’est pas une copie profonde des
attributs ou éléments de v dans u, mais une création d’un alias de v. Donc, u et v représentent
le même objet. Par conséquence, le fait de modifier les éléments de v modifie aussi ceux de u

Vous aimerez peut-être aussi