Utilisation de Python ===================== Il existe plusieurs façons d'exécuter un code Python. On peut lancer un interpréteur dans une console, ce qui permet d'exécuter les instructions ligne par ligne. On peut aussi écrire le script dans un ficher que l'on exécute. Enfin, il existe des solutions intermédiaires avec lesquels on utilise à la foi un fichier et une console. Console Python -------------- La console Python se lance simplement à partir du programme ``python``. Sous windows, on peut ouvrir un terminal depuis le menu ``Anaconda``. La console Python peut être utilisée comme une simple calculatrice : .. doctest:: >>> 1+13 14 On peut aussi y entrer des structures plus complexes directement : .. doctest:: >>> l = ['alpha', 'beta'] >>> for elm in l: ... print(elm) ... alpha beta Console IPython --------------- La console IPython est beaucoup plus pratique à utiliser que la console Python. Elle remplace de fait la console standard. La page indique les principales fonctions de IPython. Notons : * Une console qui permet d'accéder au commandes précédentes (en utilisant la flèche du haut). Il est possible de limiter la recherche en commençant à taper les premiers caractères de la lignes que l'on veut retrouver * La complétion automatique à l'aide de la touche de tabulation. .. ipython:: In [1]: une_variable_dont_le_nom_est_long = 3.2 On pourra ensuite simplement taper quelques lettres (par exemple ``une_va``) puis la touche de tabulation. Si plusieurs choix sont possibles, ils s'afficheront. Ceci est valable pour les noms de variables (donc aussi pour les fonctions), mais aussi les attributs ou méthodes des objets. * Les commandes magiques. Sera utilisé particulièrement la commande ``%run`` qui permet d'exécuter un fichier. Utilisation d'un fichier ------------------------ Dès que l'on veut exécuter plus que quelques instructions, il est préférable d'utiliser un fichier. Les fichiers contenant des instructions python ont comme extension ``.py``. Écrivons à l'aide d'un éditeur de texte standard les quelques instructions suivantes : .. testcode:: nom = 'Pierre' print('Bonjour', nom, '!') Ce fichier peut être exécuté directement à partir d'un shell à l'aide de l'instruction ``python nom_de_fichier.py``. Normalement, ce programme devrait afficher : .. testoutput:: Bonjour Pierre ! Spyder ------ Spyder offre un environnement de travail pour Python qui se veut un clone de celui de Matlab. Il est donc adapté à l'utilisation pour les scientifiques. En ouvrant ce programme, on a d'un côté un éditeur de texte et de l'autre un fenêtre d'aide et une console IPython. Nous recommandons l'utilisation de cet environnement. Exemple : lancer spyder et ouvrir le fichier créé précédemment. Exécuter le contenu de ce fichier (à partir des menus ou directement avec la touche F5). Jupyter Notebook ---------------- Le jupyter notebook offre un environnement dans lequel on peut afficher à la foi les instructions (regroupés dans dans des cellules) et les résultats de ces instructions au fur et a mesure de leur exécutions. Il est par exemple possible d'afficher des graphiques. Cet environnement est particulièrement intéressant lorsque l'on veut pouvoir présenter directement des résultats (par exemple pour un TP, ou une simulation). Jupyter se présente sous la forme d'un serveur http auquel on accède avec un navigateur web. Sous linux, lancer simplement le notebook à partir d'un terminal à l'aide de la commande .. code:: jupyter notebook Normalement, le navigateur par défaut devrait s'ouvrir. Sous windows, il existe un lien depuis le menu ``anaconda``. Exemple ------- Voici un premier exemple de code Python. L'objectif de ce code est de calculer la valeur de :math:`e^x`. Nous allons utiliser le développement limité suivant: .. math:: e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} Pour cela, nous allons calculer la somme jusqu'à une valeur :math:`n_\mathrm{max}` de :math:`n` telle que :math:`x^n/n!<\epsilon`. La variable :math:`\epsilon` déterminera la précision du calcul (plus :math:`\epsilon` est petit, meilleure est la précision). Le code Python permettant de faire ce calcul est le suivant : .. testcode:: x = 3.14 epsilon = 1E-6 resultat = 0 n = 1 terme = 1 # Valeur initiale de terme de la boucle while terme>epsilon : resultat = resultat + terme terme = terme * x/n n = n + 1 print(resultat) .. testoutput:: :hide: 23.103865905895475 Ce code ne devrait pas poser de problème au lecteur ayant déjà eu des cours de programmation. Une particularité du langage Python est présente : dans la boucle ``while``, le bloc d'instruction qui est répété est déterminé par l'indentation (espaces au début de chaque ligne). Python est donc différent de la pluspart des langages qui utilisent une structure du type ``begin-end`` ou bien des accolades pour déterminer le bloc d'instruction qui est répété. En python un bloc d'instruction est repéré par les ``:`` et un ensemble de lignes indenté identiquement. Pour effectuer l'indentation d'une ligne ou d'un bloc de ligne, le plus simple est d'utiliser la touche de tabulation (et shift + tabulation) pour supprimer l'indentation. .. exercice:: Essayez d'exécuter ce code en utilisant les différentes méthodes proposées ci dessus : * En recopiant le script dans un fichier ``exponentielle.py`` et en l'exécutant avec la commande ``python exponentielle.py`` * En utilisant ipython * En utilisant spyder * En utilisant un notebook jupyter. Pour créer une fonction, on utilise l'instruction ``def``, ce qui donne : .. testcode:: def exp(x, epsilon=1e-6): # epsilon vaut par défaut 1e-6 """ Renvoie e a la puissance x """ resultat = 0 n = 1 terme = 1 # Valeur initiale du terme de la boucle while terme>epsilon : resultat = resultat + terme terme = terme * x/n n = n + 1 return resultat .. exercice:: Depuis un éditeur (par exemple spyder), modifiez le fichier pour en faire une fonction. Exécutez le fichier et la fonction.