Olivier Guibé - LMRS, fortement inspiré d'un document de Pierre Navaro (IRMAR).

Python

Historique

  • initié par Guido Von Rossum en 1990
  • langage interprété et de haut niveau
  • très bien documenté (en anglais)
  • interfaçage avec des librairies C, C++, Fortran possible
  • on peut faire beaucoup en peu de lignes (mais il faut apprendre)
  • Facile à installer (même sous MacOS et W)
  • une grande quantité de librairies
  • très utilisé, une grande communauté

Attention à Python 2 / Python 3

  • rupture de compatibilité entre Python 2 et Python 3
  • à peu près toutes les choses importantes ont été "portées" en Python 3
  • Python 3 est à privilégier
  • print "Bonjour" devient print("Bonjour")
  • en Python 3, 1/2 vaut bien .5 (ouf), en Python 2, c'est la division entière
  • range (utilisé pour les boucles) ne retourne plus une liste, c'est le type itérateur.
  • en tenir compte lors de la récupération/échange de codes
In [1]:
print(type(range(10)), range(10), list(range(10)))
<class 'range'> range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Distributions Python

Sous Linux, votre gestionnaire de paquet installera tout ce qu'il faut. Sinon sous MacOS, Windows et même sous Linux on peut installer Python via (liste non exhaustive, mais j'ai testé)

On peut faire du Python avec son éditeur préféré (Emacs, Vim, Sublime Text, Atom, etc) ou utiliser un IDE comme

  • Spyder3 (fait partie d'Anaconda)
  • IEP (Interactive Editor for Python) (fait partie de Pyzo)

Ces IDE sont très pratiques (coloration syntaxique, auto-complétion, va-et-vient entre édition et exécution de morceaux de code, introspection (terme technique qui fait bien))

En vrac

  • langage "officiel" dans les CPGE depuis 2014
  • conseillé dans les lycées
  • disponible aux oraux du CAPES et Agrégation
  • de plus en plus utilisé comme alternative à Matlab
  • spectre très large (application web, calcul scientifique, réseau de neurones, script, etc)
  • n'est pas aussi rapide qu'un langage compilé comme le C, le Fortran, etc mais d"un autre côté le développement est facilité et Numpy est très efficace pour la vectorisation.

Premier programme

  • Affiche la chaîne de caractère "Bonjour le LMRS!" et son type.
  • Attribue la valeur 12345 à la variable a, affiche a et son type.
In [1]:
s = "Bonjour le LMRS!"
print(type(s),s)
a = 12345**5
print(type(a),a)
<class 'str'> Bonjour le LMRS!
<class 'int'> 286718338524635465625

Types de variable

  • la plupart des types sont des class
  • pour mettre deux commandes sur une même ligne ';'
In [4]:
s = int(2010); print(type(s))
s = 3.14; print(type(s))
s = True; print(type(s))
s = None; print(type(s))
s = 1.0j; print(type(s))
s = type(type(s)); print(type(s))
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'NoneType'>
<class 'complex'>
<class 'type'>

Un petit calcul

In [5]:
x = 45      # C'est un commentaire!
x += 2        # équivalent à x = x + 2, mais je ne l'utilise jamais
print(x, x > 45) # x > 45 renvoie un booléen selon que x>45 ou pas 
47 True
In [6]:
y = 2.5
print("x+y=",x+y, type(x+y))  # ajout d'un flottant à un entier => un flottant
x+y= 49.5 <class 'float'>
In [8]:
print(x*10/y)   # la division classique
print(x*10//3)  # la division entière
188.0
156
In [9]:
print( x % 8) #  % le reste de la division euclidienne
7

Assignement multiple

  • en une seule commande
  • Le membre de droite de l'expression est d'abord évalué avant l'assignement des variables
  • Les expressions sont évaluées de la gauche vers la droite
  • Faire attention
In [10]:
a = b = c = 1
print(a, b, c) 
1 1 1
In [11]:
a, b, c = 1, 2, 3
print (a, b, c)
1 2 3
In [12]:
a, c = c, a     # on permute en une seule commande, sans variable temporaire ou astuce
print (a, b, c)  
3 2 1
In [13]:
a < b < c, a > b > c
Out[13]:
(False, True)