使用Jupyter Notebook中的模块添加局部/全局变量

时间:2018-12-01 19:51:28

标签: python jupyter-notebook jupyter sympy

我正在与Sympy模块一起构建一个类,该类可用于象征性地推导某些方程式,并且我对该模块在Jupyter笔记本环境中的行为也遇到了疑问。这是一个简单的代码片段,可以解决问题:

我导入sympy并在Jupyter笔记本中定义以下类:

from sympy import *

class example:

    def __init__(self, parameters):
        self.y = simplify(0)
        globals().update(dict((p, symbols(p)) for p in parameters))

    def define_expression(self, expression1):
        self.y = expression1

    def add_expression(self, expression2):
        return self.y + expression2

如果在Jupyter笔记本中运行此程序,那么我可以完成以下操作而没有任何问题:

temp = example(['x'])
temp.define_expression(x+1)
temp.add_expression(x**2+1)

另一方面,如果我将上面的代码另存为test_class.py并在Jupyter笔记本中运行以下代码

import test_class as tc

temp = tc.example(['x'])
temp.define_expression('x+1')

然后出现以下错误:


NameError                                 Traceback (most recent call last)
<ipython-input-9-e7d0340f038c> in <module>()
----> 1 temp.define_expression(x+1)

NameError: name 'x' is not defined

我的问题归结为以下几点:是否可以创建一个类来定义可以在Jupyter笔记本中全局使用的Sympy符号?

0 个答案:

没有答案