LangageIntroduction

[wiki: Introduction]

PageOutline

#!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.

Attachments