
我正在使用Python笔记本,我想将大量输入代码[input]打包到[* .PY]文件中,然后从笔记本中调用这些文件.
我知道从Notebook运行[.PY]文件的操作,并且该命令因Linux或Windows而异. 但是,当我执行此操作并从笔记本计算机执行[.PY]文件时,它无法识别笔记本计算机中加载的任何文件. 现有的库或变量(就像[.PY]文件从头开始...).
有什么办法可以解决这个问题?
该问题的一个可能的简化示例如下:
![]()
In[1]:
import numpy as np
import matplotlib.pyplot as plt
In[2]:
def f(x):
return np.exp(-x ** 2)
In[3]:
x = np.linspace(-1, 3, 100)
In[4]:
%run script.py
“ script.py”具有以下内容:
plt.plot(x, f(x))
plt.xlabel("Eje $x$",fontsize=16)
plt.ylabel("$f(x)$",fontsize=16)
plt.title("Funcion $f(x)$")
>在实际问题中,文件[* .PY]没有4行代码,它具有足够的代码.

最佳答案
在%run magic文档中ipynb文件,您可以找到:
-i在IPython的命名空间(而不是空的)中运行文件. 如果您正在实验用文本编辑器编写的代码,该代码依赖于交互式定义的变量,则这很有用.
因此,提供-i可以解决问题:
![]()
%run -i 'script.py'
这是“正确”的方式
也许上面的命令正是您所需要的ipynb文件,但是在所有关注此问题的情况下,我决定为不知道如何变得更Python化的人加几美分.
以上解决方案有点笨拙,并且使另一个文件中的代码混乱(此x变量从何而来?f函数是什么?).

我想向您展示如何做到这一点,而不必一次又一次地执行其他文件.
只需将其转换为具有其自身功能和类的模块,然后从Jupyter笔记本电脑或控制台导入即可. 这还具有易于重用的优点,并且jupyters contextassantant可以帮助您实现自动化,或者,如果您编写文档字符串,则将显示该文档字符串.
如果您经常编辑其他文件,自动重装将为您提供帮助.
您的示例如下:
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控制台
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-254736-1.html
讓人人有錢賺
直接成为一艘在南海核心地区用不沉没的航母
媒体不负责
赔本的买卖