Ответ 1
В %run
магической документации вы можете найти:
-i запустите файл в пространстве имен IPythons вместо пустого. Это полезно, если вы экспериментируете с кодом, написанным в текстовом редакторе, который зависит от переменных, определенных в интерактивном режиме.
Поэтому при поставке -i
выполняется трюк:
%run -i 'script.py'
"Правильный" способ сделать это
Может быть, приведенная выше команда - это именно то, что вам нужно, но со всем вниманием, которое получает этот вопрос, я решил добавить еще несколько центов для тех, кто не знает, как будет выглядеть более питонический путь.
Вышеприведенное решение немного взломано и делает код в другом файле запутанным (откуда эта переменная x
и что такое функция f
?).
Я хотел бы показать вам, как это сделать, не выполняя при этом другой файл снова и снова.
Просто превратите его в модуль со своими функциями и классами, а затем импортируйте его из своего ноутбука или консоли Jupyter. Это также имеет преимущество, заключающееся в том, чтобы сделать его легко повторно используемым, а jupyters contextassistant может помочь вам с автозавершением или показать вам docstring, если вы написали один.
Если вы постоянно редактируете другой файл, то autoreload
приходит к вам.
Ваш пример будет выглядеть следующим образом:
script.py
import matplotlib.pyplot as plt
def myplot(f, x):
"""
:param f: function to plot
:type f: callable
:param x: values for x
:type x: list or ndarray
Plots the function f(x).
"""
# yes, you can pass functions around as if
# they were ordinary variables (they are)
plt.plot(x, f(x))
plt.xlabel("Eje $x$",fontsize=16)
plt.ylabel("$f(x)$",fontsize=16)
plt.title("Funcion $f(x)$")
Консоль Jupyter
In [1]: import numpy as np
In [2]: %load_ext autoreload
In [3]: %autoreload 1
In [4]: %aimport script
In [5]: def f(x):
: return np.exp(-x ** 2)
:
:
In [6]: x = np.linspace(-1, 3, 100)
In [7]: script.myplot(f, x)
In [8]: ?script.myplot
Signature: script.myplot(f, x)
Docstring:
:param f: function to plot
:type f: callable
:param x: x values
:type x: list or ndarray
File: [...]\script.py
Type: function