Les deux modes d’exécution d’un code Python

Introduction à Python

La calculatrice Python

Comme tout langage, Python permet de manipuler des donnees gr^ace a un vocabulaire de mots reserves et gr^ace a des types de donnees { approximation des ensembles de nis en mathematique.
Ce chapitre presente les regles de construction des identi ants, les types de donnees simples (les conteneurs seront examines au chapitre 4) ainsi que les types cha^ne de caracteres (Unicode et binaires).
En n, last but not the least, ce chapitre s’etend sur les notions non tri-viales de variables, de references d’objet et d’a ectation.

Les modes d’execution

Les deux modes d’execution d’un code Python

Soit on enregistre un ensemble de commandes Python dans un chier gr^ace a un editeur (on parle alors d’un script Python) que l’on execute par une touche du menu de l’editeur ;
soit on utilise un interpreteur (par exemple IDLE) pour obtenir un resultat immediat gr^ace a l’interpreteur Python embarqu dans IDLE qui execute la boucle d’evaluation (cf. Fig. 2.1)
Figure 2.1 { La boucle d’evaluation de IDLE

Identifiants et mots cles

Identifiants

Comme tout langage, Python utilise des identi ants pour nommer ses objets.
Definition
i Un identifiant Python valide est une suite non vide de caracteres, de longueur quelconque, formee d’un caractere de debut et de zero ou plusieurs caracteres de continuation.
Sachant que : un caractere de debut peut ^etre n’importe quelle lettre UNICODE (cf. p. 104 , ainsi que le caractere souligne ( ).
un caractere de continuation est un caractere de debut, un chi re ou un point.
Attention
Les identi ants sont sensibles a la casse et ne doivent pas ^etre un mot cle.

Styles de nommage

Il est important d’utiliser une politique coherente de nommage des identi ants.
Voici les styles preconises :
UPPERCASE ou UPPER_CASE pour les constantes ; TitleCase pour les classes ;
camelCase pour les fonctions, les methodes et les interfaces graphiques ; lowercase ou lower_case pour tous les autres identi ants.
Exemples :
NB_ITEMS = 12 # UPPER_CASE
class MaClasse: pass # TitleCase
def maFonction(): pass # camelCase
mon_id = 5 # lower_case

Les mots reserves de Python 3

La version 3.1.1 de Python compte 33 mots cles :
and del from None True
as elif global nonlocal try
assert else if not while
break except import or with
class False in pass yield
continue finally is raise
def for lambda return

Notion d’expression

Definition
i Une expression est une portion de code que l’interpreteur Python peut evaluer pour obtenir une valeur.
Les expressions peuvent ^etre simples ou complexes. Elles sont formees d’une combi-naison de litteraux, d’identi ants et d’operateurs.
Exemples de deux expressions simples et d’une expression complexe :
id1 = 15.3
id2 = maFonction(id1)
if id2 > 0:
id3 = math.sqrt(id2)
else:
id4 = id1 – 5.5*id2

Les types de donnees entiers

Python 3 o re deux types entiers standard : int et bool.

Le type int

Le type int n’est limite en taille que par la memoire de la machine.
Les entiers litteraux sont decimaux par defaut, mais on peut aussi utiliser les bases suivantes (cf. p. 109) :
>>> 2009 # decimal
2009
>>> 0b11111011001 # binaire
2009
>>> 0o3731 # octal
2009
>>> 0x7d9 # hexadecimal
2009
Operations arithmetiques
Les principales operations :
20 + 3 # 23
20 – 3 # 17
20 * 3 # 60
20 ** 3 # 8000
20 / 3 # 6.666666666666667
20 // 3 # 6 (division entiere)
20 % 3 # 2 (modulo)
abs(3 – 20) # valeur absolue
Bien remarquer le r^ole des deux operateurs de division :
/ : produit une division ottante ;
// : produit une division entiere.

Le type bool

Deux valeurs possibles : False, True.
Operateurs de comparaison : ==, !=, >, >=, < et <= :
2 > 8 # False
2 <= 8 < 15 # True
Operateurs logiques (concept de shortcut) : not, or et and.
En observant les tables de verit des operateurs and et or (cf. p. 108), on remarque que :
{ des qu’un premier membre a la valeur False, l’expression False and ex-pression2 vaudra False. On n’a donc pas besoin de l’evaluer ;
{ de m^eme des qu’un premier membre a la valeur True, l’expression True or expression2 vaudra True.
Cette optimisation est appelee < principe du shortcut > :
(3 == 3) or (9 > 24) # True (des le premier membre)
(9 > 24) and (3 == 3) # False (des le premier membre)
Les operations logiques et de comparaisons sont evaluees a n de donner des resultats booleens dans False, True.
Les expressions booleennes
Une expression booleenne (cf. p. 108) a deux valeurs possibles : False ou True.
Python attribut a une expression booleennes la valeur False si c’est :
la constante False ; la constante None ;
une sequence ou une collection vide ; une donnee numerique de valeur 0.
Tout le reste vaut True.

Les types de donnees ottants

 Le type float

Un float est note avec un point decimal ou en notation exponentielle :
2.718
.02
3e8
6.023e23
Les ottants supportent les m^emes operations que les entiers.
Les float ont une precision nie indiquee dans sys.float_info.epsilon.
L’import du module math autorise toutes les operations mathematiques usuelles :
import math
print(math.sin(math.pi/4)) # 0.7071067811865475
print(math.degrees(math.pi)) # 180.0
print(math.factorial(9)) # 362880
print(math.log(1024, 2)) # 10.0

Le type complex

Les complexes sont ecrits en notation cartesienne formee de deux ottants. La partie imaginaire est su xee par j :
print(1j) # 1j
print((2+3j) + (4-7j)) # (6-4j)
print((9+5j).real) # 9.0
print((9+5j).imag) # 5.0
print((abs(3+4j))) # 5.0 : module
Un module mathematique speci que (cmath) leur est reserv :
import cmath
print(cmath.phase(-1 + 0j)) # 3.14159265359
print(cmath.polar(3 + 4j)) # (5.0, 0.9272952180016122)
print(cmath.rect(1., cmath.pi/4)) # (0.707106781187+0.707106781187j)

Variables et a ectation

Les variables

Des que l’on possede des types de donnees, on a besoin des variables pour stocker les donnees.
En realite, Python n’o re pas la notion de variable, mais plut^ot celle de reference d’objet. Tant que l’objet n’est pas modi able (comme les entiers, les ottants, etc.), il n’y a pas de di erence notable. On verra que la situation change dans le cas des objets modi ables. . .
Definition
i Une variable est un identi ant associe a une valeur. Informatiquement, c’est une reference d’objet situe a une adresse memoire.

L’afiectation

Definition
i On a ecte une variable par une valeur en utilisant le signe = (qui n’a rien a voir avec l’egalit en math !). Dans une a ectation, le membre de gauche recoit le membre de droite ce qui necessite d’evaluer la valeur correspondant au membre de droite avant de l’a ecter au membre de gauche.
a = 2 # prononcez : a « recoit » 2
b = 7.2 * math.log(math.e / 45.12) – 2*math.pi c = b ** a
La valeur d’une variable, comme son nom l’indique, peut evoluer au cours du temps (la valeur anterieure est perdue) :
a = a + 1 # 3 (incrementation)
a = a – 1 # 2 (decrementation)

Affecter n’est pas comparer !

L’affectation a un e et (elle modifie l’etat interne du programme en cours d’ex – cution) mais n’a pas de valeur (on ne peut pas l’utiliser dans une expression) :
>>> a = 2
>>> x = (a = 3) + 2 SyntaxError: invalid syntax
La comparaison a une valeur utilisable dans une expression mais n’a pas d’e et (l’automate interne representant l’evolution du programme n’est pas modi e) :
>>> x = (a == 3) + 2
>>> x
2

Les variantes de l’affectation

Outre l’a ectation simple, on peut aussi utiliser les formes suivantes :
# affectation simple v = 4
# affectation augmentee
v += 2 # idem a : v = v + 2 si v est deja referenc
# affectation de droite a gauche
c = d = 8 # cibles multiples
# affectations paralleles d’une sequence
e, f = 2.7, 5.1 # tuple
g, h, i = [’G’, ’H’, ’I’] # liste
x, y = coordonneesSouris() # retour multiple d’une fonction

Les affectations (explications graphiques)

Dans les schemas de la gure 2.2, les cercles representent les identi cateurs alors que les rectangles representent les donnees.
Les affectations relient les identificateurs aux donnees : si une donnee en me-moire n’est plus reliee, le ramasse-miettes (garbage collector) de Python la supprime automatiquement :

Les cha^nes de caracteres

Les cha^nes de caracteres : presentation

Definition
i Le type de donnees non modi able str represente une sequence de caracteres Unicode.
Non modi able signi e qu’une donnee, une fois cree en memoire, ne pourra plus ^etre changee.
(a) Trois a ectations (b) La donnee ’c’ est supprimee
(c) La donnee ’a’ est supprimee

1 Introduction 
1.1 Principales caracteristiques du langage Python
1.2 Materiel et logiciel
1.2.1 L’ordinateur
1.2.2 Deux sortes de programmes
1.3 Les langages
1.3.1 Des langages de dierents niveaux
1.3.2 Bref historique des langages
1.4 Production des programmes
1.4.1 Deux techniques de production des programmes
1.4.2 Technique de production de Python
1.4.3 La construction des programmes
1.5 Algorithme et programme
1.6 Les implementations de Python
2 La calculatrice Python 
2.1 Les modes d’execution
2.2 Identiants et mots cles
2.3 Notion d’expression
2.4 Les types de donnees entiers
2.5 Les types de donnees ottants
2.6 Variables et aectation
2.7 Les cha^nes de caracteres
2.8 Les donnees binaires
2.9 Les entrees-sorties
2.9.1 Les entrees
2.9.2 Les sorties
2.9.3 Les sequences d’echappement
3 Le contr^ole du  ux d’instructions
3.1 Les instructions composees
3.2 Choisir
3.3 Boucler
3.4 Ruptures de sequences
4 Les conteneurs standard 
4.1 Les sequences
4.2 Les listes
4.3 Les listes en intension
4.4 Les tuples
4.5 Retour sur les references
4.6 Les tableaux associatifs
4.7 Les ensembles (set)
4.8 Les chiers textuels
4.9 Iterer sur les conteneurs
4.10 L’achage formate
5 Fonctions et espaces de noms 
5.1 Denition et syntaxe
5.2 Passage des arguments
5.3 Espaces de noms
5.3.1 Portee des objets
5.3.2 Resolution des noms : regle LGI
6 Modules et packages 
6.1 Modules
6.2 Bibliotheque standard
6.3 Bibliotheques tierces
6.4 Packages
7 La programmation Orientee Objet 
7.1 Insusance de l’approche procedurale
7.2 Terminologie
7.3 Classes et instanciation d’objets
7.4 Methodes
7.5 Methodes speciales
7.5.1 Les methodes speciale
7.6 Heritage et polymorphisme
7.7 Retour sur l’exemple initial
7.8 Notion de Conception Orientee Objet
7.8.1 Composition
7.8.2 Derivation
8 Techniques avancees 
8.1 Techniques procedurales
8.2 Techniques objets
8.3 Techniques fonctionnelles
8.3.1 Directive lambda
8.3.2 Les fonctions map, filter et reduce
8.3.3 Les applications partielles de fonctions
9 La programmation < OO > graphique 
9.1 Programmes pilotes par des evenements
9.2 La bibliotheque tkinter
9.3 Deux exemples
9.3.1 tkPhone, un exemple sans menu
9.3.2 IDLE, un exemple avec menu
10 Notion de developpement agile 
10.1 Les tests
10.2 La documentation
10.2.1 Le format reST
10.2.2 Le module doctest
10.2.3 Le développement dirige par la documentation

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *