Запуск другого скрипта при совместном использовании функций и переменных, как в jupyter notebook

#python #share

#python #Поделиться

Вопрос:

У меня есть ноутбук, который %run является другим ноутбуком в JupyterLab. Они могут вызывать функции друг друга и совместно использовать некоторые глобальные переменные. Теперь я хочу преобразовать записные книжки в файлы py, чтобы их можно было выполнить из командной строки.

Я следую совету, найденному в SO, и импортировал 2-й файл в основной. Однако я обнаружил, что они не могут вызывать функции друг друга. Это серьезная проблема, потому что 2-й файл является сервисом для основного, но он постоянно использует функции, которые являются частью основного.

По сути, вторая программа не имеет графического интерфейса и управляется основной, которая является программой с графическим интерфейсом. Таким образом, всякий раз, когда служебной программе необходимо выполнить печать, она проверяет, установлен ли флаг, сообщающий ей, что она выполняется в режиме GUI, а затем вместо простой печати она вызывает функцию в основной, которая знает, как отобразить ее на экране GUI. Я хочу сохранить это разделение.

Как я могу добиться этого без особых изменений в служебной программе?

Ответ №1:

В итоге я собрал все функции GUI из основной программы GUI и поместил их в 3-й файл в классе, включая соответствующие переменные. В программе с графическим интерфейсом непосредственно перед вызовом программы, отличной от GUI (служебной) Я создал класс и установил все переменные, и в вызове я передал класс. Затем в служебной программе я вызываю функции, которые находятся в классе, и также получаю необходимые переменные из класса. Изменения в служебной программе были незначительными — просто считывание переменных из класса и изменение вызовов функции GUI для вызова функций класса вместо этого.