[wiki: Introduction]
#!comment
A ce stade : on essaie tout le prompt.
Ensuite : on passe en fichiers.
A revoir :
*) pour les débutants, faire l'impasse sur la réutilisation des objets entiers et le "is" (peut-être classer "is" dans les pièges).
*) refaire les démos en "animations"
*) parler de "shallow copy" et "deep copy".
Historique
- Fin des années 80 : au sein du Centrum voor Wiskunde en Informatica (Pays-Bas), Guido van Rossum concoit un langage de script inspiré d’ABC, Modula-3, C, Unix.
- 1991 : Python 0.9.0 est posté sur le forum alt.sources.
- 2001 : Python 2.1, première version de la Python Software Foundation.
- 2008 : Python 3.0, non compatible avec les précédentes.
Fiche d’identité
- Python est un langage
- Semi-interprété : interprété, mais compilé au vol dans un langage propre à chaque interpréteur (CPython, Jython, !IronPython).
- Multi-paradigmes : impératif, orienté objets (classes et héritage), fonctionnel…
- Typage :
- dynamique : le type est attaché aux objets (pas aux variables ou références vers ces objets), il est présent et interrogeable à l’éxécution (introspection).
- fort : refus d’additionner des pommes et des poires, ni de transformer implicitement un type dans un autre.
- « canard » : si je vois un animal qui vole comme un canard, cancane comme un canard, et nage comme un canard, alors j’appelle cet oiseau un canard => une fonction peut utiliser n’importe quel objet, du moment qu’il offre l’interface attendue (un peu comme les templates C++).
- Gestion automatique de la mémoire : les variables sont des références vers les objets, et les copies ne copient en général que la référence, pas l’objet. Les objets qui ne sont plus référencés sont automatiquement récupérés par le ramasse-miette.
- Utilisé pour
- Scripts d’administration de système.
- Sites webs (celui-ci ! Django, TurboGears, Zope, Plone, …).
- Applications bureautiques.
- Calcul scientifique (NumPy, SciPy, Sage), les parties sensible étant optimisées en C.
Mise en page
- Une instruction par ligne.
- On peut poursuivre sur plusieurs lignes avec « \ » ou parenthèses.
- On peut mettre plusieurs instructions par ligne séparées par des « ; » (non recommandé).
- Les blocs d’instructions sont indentés.
- Commentaires par « # ».
if a > 1 and b > 5 \
and c < 3:
print(1)
if (a > 1 and b > 5
and c < 3):
print(1)
a = 1
if a > 2:
b = a + 1
print(b)
print(a)
# commentaire
print(1) # un autre commentaire
Variables
- Identifiants
- lettres, chiffres et « _ » .
- interdit d’utiliser les mot-clés (ou mots réservés).
- dangereux de redéfinir les built-in.
*: par convention, noms définis par le système.- Affectation par « = »
- Comparaison par « == »
- On peut voir le contenu d’une variable…
- en donnant son nom à l’interpréteur python ;
- ou en utilisant la fonction print().
- Affectations multiples
prompt> a, b, c = 1, 2, 'hello'
prompt> x, y = y, x
#!comment
Les caractères non-ascii sont autorisés depuis Python3… à éviter !!
Types de base
- Nombres :
1234,3.1415,999999999999999999999999999,3+4j. - Chaines de caractères :
'spam',"guido's". - Listes :
[1, [2, 'three'], 4]. - Dictionnaires :
{'a': 'val', 3: 'x', 'key': 124}. - Tuples :
(1, 'spam', 4, 'U' ). - Fichiers :
myfile = open('eggs','r'). - Autres :
Sets,types,None,Booleans.
#!comment
on peut mélanger des torchons et des serviettes
on peut imbriquer les collections
Objet None
Instructions de contrôle de flux
#!python
if a > b:
print('a>b')
elif a == b:
print('a==b')
else:
print('a<b')
#!python
while a < max:
print(a)
a += 1
#!python
for i in ['a', 'b', 'c']:
print(i)
#!python
for i in range(10):
print(i)
#!python
for i in range(4):
if i == 2:
continue
print(i)
#!html
<pre style="margin-left:50px;border: 1px solid lightgoldenrodyellow;padding:10px;background-color:lightyellow">
0
1
3
</pre>
#!python
for i in range(6):
if i == 4:
break
print(i)
#!html
<pre style="margin-left:50px;border: 1px solid lightgoldenrodyellow;padding:10px;background-color:lightyellow">
0
1
2
3
</pre>
#!comment
Expression : booléen ou nombre, considéré comme True si différent de 0.
For attend un itérateur
Très déconseillé de modifier la séquence sur laquelle on itère
En python 2, on préfèrera xrange plutôt que range.
Pas de switch.
Fonctions
- Définition :
1. « def », suivi du nom de la fonction, suivi des arguments entre parenthèses (sans types), suivi de « : »
1. bloc indenté d’instructions
- Retour :
- si « return » est suivi d’une liste de valeurs séparées par des virgules, elles sont empaquetées en tuple.
- en absence de « return », la fonction retourne « None ».
- Appel de fonction : les valeurs données entre parenthèses sont affectées aux arguments, dans l’ordre.
#!python
def divs(x,y):
'Essaie / et //.'
res1 = x/y
res2 = x//y
return res1, res2
divs(2.,3.)
#!html
<pre style="margin-left:50px;border: 1px solid lightgoldenrodyellow;padding:10px;background-color:lightyellow">
(0.6666666666666666, 0.0)
</pre>
Opérateurs
- Opérateurs
& | ^ ~ << >>
= != < > <= >
+ - * ** / // %
- Délimiteurs
( ) [ ] { }
, : . ; @
= += -= *= /= //= %= &= |= ^= >>= <<= **=
#!comment
On notera :
** : puissance
/ et //
% avec une string à gauche : formatage
Bibliothèque standard
import random
rand_number = random.randint(1, 100)
Mot-clés
pass
None False True
if elif else while for continue break
is in and or not
def return lambda yield
del global
class
import as from
assert try raise except finally with
nonlocal
Installation des outils
Pour l’environnement Windows, nous vous proposons d’installer les dernières versions de la distribution ActivePython, à la fois pour Python 2 et Python 3, afin de pouvoir expérimenter les deux versions. Une fois ces distributions installées, ce qui demandera sans doute une intervention du formateur pour passer en mode administrateur, vous pourrez utiliser deux programmes disponibles dans le menu « démarrer / tous les programmes » :
- !ActiveState !ActivePython … / Python Interactive Shell : pour executer des commandes simples.
- !ActiveState !ActivePython … / IDLE : pour executer des commandes simples et des fichiers.
Trucs et astuces pour grands débutants
- N’oubliez pas le ‘:’ à la fin de vos if/while/for.
- Commencer vos instructions de plu shaut niveau sur la colonne 1.
- Avec l’interpréteur les lignes blanches comptent ! (elles marquent la fin d’un bloc d’instructions, alors que dans un fichier elles sont ignorées).
- Ne mélangez pas tabulations et espaces pour votre indentation, et soyez très attentifs à ce que fait votre éditeur « intelligent » en la matière. Un texte qui semble aligné peut ne pas l’être du pont de vue de Python, ou dans un autre éditeur qui gère différemment les tabulations.
- Ne faites pas du C
- inutile de mettre vos conditions entre parenthèses
- inutile de terminer les lignes par des ‘;’
- ne faites pas d’assignation dans les conditions
- ne mettez pas de {} autour de vos blocs d’instructions.