2A.soft - Jupyter et commandes magiques

Links: notebook, html, PDF, python, slides, GitHub

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.

from jyquickhelper import add_notebook_menu
add_notebook_menu()

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.

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))]
ip = get_ipython()
ip.register_magics(CustomMagics)
%RND 20
[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 :