Синхронизация кода между скриптом ноутбука jupyter /iPython и методами класса

Я пытаюсь найти лучший способ сохранить код в блокноте Jupyter /iPython и тот же код внутри метода класса в синхронизации.Вот пример использования:Я написал длинный сценарий, который использует панды в блокноте и имеет несколько ячеек, которые упростили разработку, потому что я мог проверить промежуточные результаты в блокноте.Это очень полезно со скриптами панд.Я загрузил этот рабочий код в файл Python ".py" и преобразовал этот сценарий в метод в классе Python в моей программе, для которого создаются входные данные, и выдает результат в результате этого метода.Все отлично работаетЭтот класс Python используется в гораздо большем приложении, так что это реальный результат.Но затем была ошибка для определенного набора данных в реализации метода, которая также была в моем сценарии.Я мог бы вернуться к своей записной книжке и пошагово пройтись по различным ячейкам, чтобы найти проблему.Я исправляю проблему, но затем мне нужно аккуратно внести изменения в обычный код метода класса Python.Это немного больно.В идеале я хотел бы иметь возможность запускать метод класса по ячейкам, чтобы я мог проверить промежуточные результаты.Я не могу понять, как это сделать.Итак, каков наилучший метод между синхронизацией кода сценария и кода, встроенного в метод класса?Да, я знаю, что могу импортировать класс в записную книжку, но тогда я теряю возможность просматривать промежуточные результаты внутри метода класса через отдельные ячейки, что я и делаю, когда это чистый сценарий.С пандами это очень полезно.
4 голоса | спросил Irv 4 PM00000050000002431 2016, 17:46:24

1 ответ


0
Я использовал тот же рабочий процесс разработки и осознал ценность возможности пошагового выполнения кода с помощью блокнота jupyter.Я разработал несколько пакетов, сначала хешируя детали, а затем, в конечном итоге, перемещая отшлифованный продукт в отдельные файлы .py.Я не думаю, что есть простое решение неудобств, с которыми вы сталкиваетесь (я сталкивался с теми же проблемами), но я опишу свою практику (я не настолько смел, чтобы объявлять ее «лучшей» практикой) и, возможно, онабудет полезен в вашем случае использования.По моему опыту, как только я создал модуль /пакет из моего ноутбука Jupyter, легче поддерживать /разрабатывать код вне ноутбука и импортировать этот модуль в ноутбук для тестирования.Хранение каждого метода небольшим является хорошей практикой в ​​целом и очень полезно для проверки логики на каждом этапе с помощью ноутбука.Вы можете разбить большие «публичные» методы на более мелкие «частные» методы, названные с использованием начального подчеркивания (например, «_load_file». Вы можете вызывать «частные» методы в своей записной книжке для тестирования /отладки, но пользователи вашего модуля должны знать, что их следует игнорироватьэти методы.Вы можете использовать ---- +: = 0 =: + ---- функции в ---- +: = 1 =: + ---- модуль быстро обновить импортированные модули с изменениями в исходном коде,Повторный вызов ---- +: = 3 =: + ---- фактически не обновит ваше пространство имен.Вам нужна функция ---- +: = 4 =: + ---- (или аналогичная), чтобы заставить python перекомпилировать /выполнить код модуля.Неизбежно, вам все равно придется построчно проходить по отдельным функциям, но если вы разложили свой код на маленькие методы, объем кода, который вам нужно «переписать» в блокноте, очень мал.
ответил Gordon Bean 8 PM000000110000000231 2016, 23:32:02

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132