Поговорим про IronPython
Расскажем об интересном проекте IronPython. Описание звучит так: «IronPython — это реализация языка программирования Python с открытым исходным кодом, которая тесно интегрирована с .NET Framework. IronPython может использовать библиотеки .NET Framework и Python, а другие языки .NET могут также легко использовать код Python».
Для начала установим все необходимое. Для работы с данным проектом нам понадобиться Visual Studio (мы используем 2019,. Net Framework необходим не ниже 4.5,. Net Core 2.0 или 2.1). Установить можно через менеджер Nuget Install-Package IronPython Install-Package IronPython.StdLib. Текущая, на момент написания статьи, версия – 2.7.10.
Для начала создадим приложение Windows Forms и добавим туда все, что требуется:
В этот раз не будем пытаться решать сложных проблем, придумаем что-нибудь простое и одновременно показывающее взаимодействие Python и C#. Пусть нам необходимо сложить 2 числа (и мы по каким-то причинам не хотим делать эту операцию обыкновенным способом «в столбик» или с помощью калькулятора). Для этого добавим на нашу форму 3 TextBox-а, пару Label-ов и один Button. Должно получиться примерно так:
В первые два текстовых поля мы будем вводить наши значения, а в третьем пусть отображается наш результат.
Определим две переменные:
Стоит отметить, что все, что будет взаимодействовать с IronPython, должно быть «public».
Существует несколько методов для работы со скриптами в Ironpython:
Нам больше всего нравится способ ExecuteFile(), его и будем использовать. Для этого в метод инициализации формы добавим следующее:
Для того, чтобы выполнить какой-нибудь скрипт, добавим в код метода обработки кнопки следующий код:
В указанном выше коде выполняется построчно следующее:
- Исполняется файл по указанному адресу, в котором определена функция,
- Функция из Python определяется в C#,
- Вычисляется значение функции с учетом введенных значений,
- В текстовое поле, предполагавшееся для ответа, записывается результат арифметической операции либо ошибка, которая возникла при выполнении.
Ну и сам Python-файл с функцией содержит код:
Проверим, как работает наш «вычислитель»:
Верно! У нас получилось написать простейшее приложение с применением этой технологии. Кажется, мы решили «детскую» задачку – написали простейший калькулятор, который умеет только складывать два числа. Но разве не с простых «детских» задач начинается изучение чего-то нового?!Это неплохая возможность в изучении с использованием уже знакомых инструментов. С помощью IronPython можно не только интерпретировать некоторый код, но и проводить некоторые параллели при изучении Python. К примеру, код на C#:
Будет эквивалентен следующему коду на IronPython:
Есть некоторое сходство, верно?!
Если в течение какого-то продолжительного времени вы писали .Net приложения традиционным способом (запись, компиляция, тестирование, исправление, перекомпиляция, повторное тестирование, все сначала) и по каким-то причинам столкнулись с необходимостью работы со скриптами (даже необязательно для анализа данных), то IronPython может стать своеобразным «мостом» для перехода к написанию скриптов Python и подарит возможность взглянуть на некоторые вещи под иным углом.