Как запустить макрос ноутбука Jupyter в цикле для - PullRequest
0 голосов
/ 05 ноября 2018

Я определил макрос inc в Jupyter Notebook. Я могу запустить макрос из другой клетки. Однако макрос не может быть запущен в цикле for.

[1]

x = 0

[2]

x += 1

[3] * * 1 010

%macro inc 2

[4]

inc

[5]

x

выходы 2

[6]

for _ in range(10): inc

[7]

x

все еще выводит 2.

1 Ответ

0 голосов
/ 05 ноября 2018

Лучшее, что я придумал сейчас, это использование run_cell метода

Сначала вам нужно получить текущую интерактивную оболочку Ipython с помощью get_ipython

Полный пример

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

Это не решение, которое полностью удовлетворяет меня, но, может быть, кто-то еще сможет добавить что-то лучше.


Примечание: Решение ниже работает для более старых Ipython

попробуйте просто запустить его как вызываемый:

for _ in range(10): <b>inc()</b>

Объяснение * * 1023 Макросы Ipython являются экземплярами IPython.core.macro.Macro Документация утверждает, что это просто простые объекты, хранящие кусок истории в переменной. И это правда. In [20]: inc.__dict__ Out[20]: {'value': u'x += 1\n'} Вы также можете прочитать: Макрос - это просто вызываемый объект, который выполняет строку IPython

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...