4 votes

comment exécuter une macro de notebook jupyter dans une boucle for

J'ai défini une macro inc dans Jupyter Notebook. Je peux exécuter une macro à partir d'une autre cellule. Cependant, la macro ne peut pas être exécutée dans la boucle for.

[1]

x = 0

[2]

x += 1

[3]

%macro inc 2

[4]

inc

[5]

x

Sorties 2

[6]

for _ in range(10): inc

[7]

x

encore des sorties 2.

2voto

Kamil Niski Points 3164

La meilleure solution que j'ai trouvée pour le moment est d'utiliser run_cell méthode

Tout d'abord, vous devez récupérer le shell interactif Ipython actuel avec get_ipython

Exemple complet

ip = get_ipython()
for _ in range(5): ips.run_cell('inc')

Cette solution ne me satisfait pas pleinement, mais quelqu'un d'autre pourra peut-être ajouter quelque chose de mieux.


Note : La solution ci-dessous fonctionne pour les plus anciens Ipython

essayez de l'exécuter en tant que callable :

for _ in range(10): inc()

Explication

Les macros Ipython sont des instances de IPython.core.macro.Macro

Documentation indique qu'il s'agit d'un simple objet stockant un morceau d'histoire dans une variable. Et c'est vrai.

In [20]: inc.__dict__
Out[20]: {'value': u'x += 1\n'}

Vous pouvez également lire :

Une macro est simplement un appelable qui exécute une chaîne de caractères IPython

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X