.. _td2acenoncesession2Crst: ======================================= 2A.soft - Jupyter et commandes magiques ======================================= .. only:: html **Links:** :download:`notebook `, :downloadlink:`html `, :download:`python `, :downloadlink:`slides `, :githublink:`GitHub|_doc/notebooks/td2a/td2a_cenonce_session_2C.ipynb|*` Pour être inventif, il faut être un peu paresseux. Cela explique parfois la syntaxe peu compréhensible mais réduite de certaines instructions. Cela explique sans doute aussi que `Jupyter `__ offre la possibilité de définir des `commandes magiques `__ qu’on peut interpréter comme des raccourcis. ``%`` pour une ligne, ``%%`` pour une cellule. .. code:: ipython3 from jyquickhelper import add_notebook_menu add_notebook_menu() .. contents:: :local: Commande magique ---------------- Ce sont des raccourcis. Si vous n’avez plus envie d’écrire le même code tous les jours alors peut-être que vous avez envie de créer une commande magique. C’est une fonctionnalité des notebooks Jupyter. L’exemple suivant crée une commande magique qui génère une séquence de nombre aléatoire dans le notebook. On l’appelle ``RND``. Cela se passe en trois étapes : - implémentation de la commande - déclaration de la commande (pour Jupyter) - utilisation de la commande C’est l’objet des trois cellules qui suivent. .. code:: ipython3 import random from IPython.core.magic import Magics, magics_class, line_magic, cell_magic, line_cell_magic @magics_class class CustomMagics(Magics): @line_magic def RND(self, line): return [ random.random() for i in range(0,int(line))] .. code:: ipython3 ip = get_ipython() ip.register_magics(CustomMagics) .. code:: ipython3 %RND 20 .. parsed-literal:: [0.7597340836812444, 0.7417183818784308, 0.5919053129335919, 0.42644466969431216, 0.025703336169412228, 0.37317015957688837, 0.5240186951312955, 0.47640296529847126, 0.9582206394610842, 0.2766903488489415, 0.3163718095585957, 0.2540976883769992, 0.41766681610331, 0.7107081118267403, 0.5675086760409057, 0.23741203524882026, 0.3511910318651611, 0.5027315091097999, 0.7218048703284364, 0.89482670010109] Exercice 1 : votre propre magique commande ------------------------------------------ Je voulais vous demander comme exercice d’écrire une commande magique qui `envoie un mail `__. On pourrait imaginer une commande qui récupère les messages facebook. Finalement, ce sera une commande magique ``%plot`` qui dessine le graphe de vos rêves. Vous pourrez perfectionner votre commande magique en lisant cette page `Registering callbacks `__. **Remarque :** Si vous décidez d’automatiser l’envoi des mails, prenez garde de ne pas écrire votre mot de passe dans le code de votre programme surtout si son code est disponible sur `GitHub `__. Il est préférable de le demander à chaque fois ou de le stocker de façon cryptée : - `django `__ - `keyring `__