Добавление локальных / глобальных переменных с помощью модуля в блокнотах Jupyter - PullRequest
0 голосов
/ 01 декабря 2018

Я работаю с модулем 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

Мой вопрос сводится к следующему: Можно ли создать класс, который определяет символы Sympy, которые могут использоваться глобально в Jupyter?ноутбук?

...