を%run
magic documentationあなたは見つけることができます:
は
-iの代わりにIPythonの名前空間内のファイルを実行します空のもの。インタラクティブに定義された変数に依存するテキストエディタで書かれたコードを試している場合に便利です。
したがって、-i
を供給することは、トリックを行います。
%run -i 'script.py'
"正しい" 方法は、それが
たぶん、上記のコマンドはあなたが必要なものだけで行うには、しかし、とこの質問にすべての注意を払うと、私は、もっとpythonicな方法がどのように見えるかわからない人のために、もう少しセントをそれに加えることに決めました。
上記の解決策はちょっと厄介で、他のファイルのコードを混乱させます(x
変数はどこから来ていますか?f
関数は何ですか?)。
実際に別のファイルを何度も何度も実行しなくても、その方法を説明したいと思います。
独自の関数とクラスを持つモジュールに変換し、それをJupyterのノートブックまたはコンソールからインポートするだけです。これには、簡単に再利用できるというメリットもありますし、Jupytersのコンテクストアシスタントがあなたに自動補完を手伝ったり、手書きを書いた場合にドキュメントストリングを表示したりすることができます。
他のファイルを常に編集している場合は、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
あなたの 'X'変数は、あなたの '.ipynb'ファイルにローカルでありますあなたの '.py'ファイルではありません。 '.py'ファイルは' x'について全く知らない。スクリプト間でその値を渡す方法を見つける。何かmyfile.ipynb輸入X 'から(あなたは '.ipynb'ファイルとインポートの種類を行うことができるかどうかわからないが、あなたは私が何を意味するかを見ています'のような? – blacksite
はお返事をいただき、ありがとうございます。私が欲しいということですノートブックはあまりひどくコード化されていません... – JMSH