Utilisation de Python ===================== Il existe plusieurs façons d'executer un code Python. On peut lancer un interpréteur dans une console, ce qui permet d'excuter les intructions ligne par ligne. On peut aussi écrire le script dans un ficher que l'on execute. Enfin, il existe des solutions intermédiaire avec lesquels on utilise à la foi un fichier et une console. Console Python -------------- La console Python se lance simplement à partir du programme ``python``. 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 methodes des objets. * Les commandes magiques. Sera utilisé particulièrement la commande ``%run`` qui permet d'executer un fichier. Utilisation d'un fichier ------------------------ Dès que l'on veut executer plus que quelques instructions, il est préférable d'utiliser un fichier. Les fichiers contenant des instructions python ont comme extension ``.py``. Ecrivons à l'aide d'un éditeur de texte standard les quelques instructions suivantes : .. testcode:: nom = 'Pierre' print('Bonjour', nom, '!') Ce fichier peut être executé directement à partir d'un shell à l'aide de l'instruction ``python nom_de_fichier.py``. Normalement, ce programme devrait affichier : .. 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 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édement. Executer 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. Jupyter se présente sous la forme d'un serveur http auquel on accède avec un navigateur web. Sous linux, lancer simplement la notebook à partir d'un terminal à l'aide de la commande .. code:: jupyter notebook Normalement, le navigateur par défaut devrait s'ouvrir. Sous windows, ???? 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` determinera 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 determiné 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 determiner 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 suprimer l'indentation. .. exercice:: Essayez d'executer 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. Executez le fichier et la fonction.