Formation permanente du CNRS, Délégation Alsace
Février - Mars 2017
Auteurs :
Contenu sous licence CC BY-SA 4.0
Notebook : 00-InitPython-generalites.ipynb
Notebook : [01-InitPython-langage.ipynb]
Notebook : [02-InitPython-langage.ipynb]
Notebook : [03-InitPython-microprojet.ipynb]
Le document que vous lisez est un notebook iPython. Il est constitué de cellules comportant :
print('Hello world!')
Note :
print()
est une fonction fournie par python pour afficher du texte à destination de l'utilisateur.- les crochets [ ] à gauche de la cellule indiquent le nombre d'exécutions de la cellule. Ici, la cellule n'a pas encore été exécutée.
Exercice : Revenez en arrière, sélectionnez et exécutez (SHIFT+ENTER) la cellule de code qui contient print('Hello world!')
La plupart des actions à la souris peuvent se faire à l'aide des raccourcis du menu Help > Keyboard Shortcuts (touche H)
Exercice : Revenez en arrière, sélectionnez la cellule "Hello world". Modifiez son contenu, par exemple traduisez le message en français, réexécutez-la et observez le nouveau résultat. Remarquez que le nombre d'exécutions augmente.
Exercice
- Suivre le tour guidé de l'interface : Help > User Interface Tour
- Avancer dans le notebook avec "Shift + Enter"
- Passer du mode Commande au mode Edition de différentes façons
- Ouvrez la rubrique Keyboard Shortcuts de l'aide et tenter de reproduire les actions uniquement avec les touches du clavier
Exercice :
- Ajoutez une cellule de texte ci-dessous (touches 'b' puis 'm'), et mettez-y une note.
- Ajoutez une cellule de code ci-dessous (touche 'b'), et mettez-y un exemple de code.
On "parle" à l'ordinateur pour lui "demander" de faire quelque chose
Un programme : algorithme, formules mathématiques, logique, recette de cuisine
Les ingrédients pour la recette => les données : fichiers, mouvements de la souris, des touches entrées au clavier, des données en provenance du réseau...
On utilise un (des) langage(s) de programmation. Langage dans le sens linguistique: vocabulaire, orthographe, syntaxe et dialectes...
Un programme est écrit sous forme de texte structuré : ensemble de phrases ordonnées qui exprimment la recette
Plus d'informations sur wikipedia ou sur le site officiel de python.
La genèse du langage date de la fin des années 80. Guido van Rossum, alors à l'Institut de Recherche en Mathématiques et Informatique hollandais (CWI) à Amsterdam a publié la version 0.9.0 de l'interpréteur en Février 1991. Il travaille maintenant pour dropbox après 7 ans chez google.
Plus d'histoire sur wikipedia.
L'histoire racontée par le créateur lui-même sur son blog sous forme d'anecdotes.
Un langage interprété sera souvent moins rapide qu'un langage compilé, car les optimisations sont plus faciles a réaliser lors d'une compilation.
Cette différence a tendance a s'estomper avec l'apparition des techniques suivantes:
Une autre possibilité pour contourner la lenteur d'exécution d'un langage est de faire appel a des librairies externes programmées dans un langage compilé et optimisées. Cela est très efficace pour les parties du code qui sont utilisées de manière répétitive.
Figure inspirée du livre [Apprendre à programmer en Python](http://framasoft.net/IMG/pdf/python_notes-2.pdf) de G. Swinnen.
On peut exécuter le code directement à l'invite de l'interpréteur.
$ python
Python 3.5.2+ (default, Sep 22 2016, 12:18:14)
[GCC 6.2.0 20160927] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 2
>>> print(a)
2
>>>
Le caractère '$ ' est l'invite de commande typique d'un système d'exploitation linux, si vous utilisez une version de windows, l'invite de commande de cmd.exe sera plutot 'C:\> '.
On peut l'exécuter en paramètre de la ligne de commande
$ python -c 'a=3;print(a)'
Sous windows:
C:\> python.exe -c 'a=3;print(a)'
On peut exécuter un fichier (par exemple test.py) contenant notre code
$ python test.py
On peut exécuter directement un fichier python contenant notre code, grâce à l'utilisation du mode script avec, en rajoutant en première ligne du fichier:
#! python
Après avoir rendu le fichier exécutable
$ chmod a+x test.py
Ensuite il peut être exécuté sans donner l'interpréteur:
$ ./test.py
Le terminal interactif iPython peut s'utiliser comme alternative à la console Python classique pour ses fonctionnalités :
Aperçu du terminal ipython :
$ ipython
Python 3.5.2+ (default, Sep 22 2016, 12:18:14)
Type "copyright", "credits" or "license" for more information.
IPython 2.4.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]:
Sauvegarde de l'historique des commandes avec la magic function %save
$ ipython
Python 3.5.2+ (default, Sep 22 2016, 12:18:14)
Type "copyright", "credits" or "license" for more information.
IPython 2.4.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: print('- Hello world!')
- Hello world!
In [2]: R = 'Hello you! '
In [3]: print(R*6)
Hello you! Hello you! Hello you! Hello you! Hello you! Hello you!
In [4]: %save hello.py 1-3
The following commands were written to file `hello.py`:
print('- Hello world!')
R = 'Hello you! '
print(R*6)
In [5]: quit
Les cellules de type code vous donnent accès à une console qui inclut la plupart des fonctionnalités de la console iPython.
Exercice :
- Exécuter la cellule de code ci-dessous et observez le résultat
- Exécuter cette cellule une deuxième fois, observez la différence
print('- Hello world!')
R = '- Hello you!\n'
print(R*6)
%history
Un grand nombre d'IDE sont disponibles pour Python (cf. la revue wikipedia et la la revue wiki.python.org).
Citons simplement :
Python est un langage complet, utilisable dans un grand nombre de domaines :
Plus d'exemples sur wikipedia
Pour un usage scientifique, Python est intéressant à plusieurs titres. En effet, il est capable de réaliser de manière automatique et efficace un certain nombre de tâches qui sont le quotidien des scientifiques :
Dans le domaine du calcul scientifique, Python est particulièrement riche en fonctionnalités grâce à la contribution importante de la communauté des mathématiques et du calcul à travers le projet SciPy.
Bien que généralement moins performant que les langages compilés (C, C++ ou Fortran), Python est particulièrement intéressant et agréable à programmer dans les phases de développement pour tester rapidement de nouvelles méthodes. Une fois le prototypage terminé, il est posible de porter les parties critiques du code vers un langage compilé plus rapide, tout en gardant le reste en python.
Quelques ressources qui ont inspiré le contenu de cette formation et qui pourront vous servir pour aller plus loin :
avec le langage
avec les notebooks Jupyter