我正在与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符号?