NppPyInline — это встраиваемый инструмент, который превращает текстовый редактор Notepad++ в среду инлайн-вычислений. Он позволяет выполнять Python-код прямо внутри текстового буфера Scintilla с мгновенным выводом и обновлением результатов в тех же строках или в специально отведенном месте.
Вы пишете код прямо в тексте, запускаете скрипт и получаете результат вычислений. Исправили ошибку или изменили исходные данные — перезапустили скрипт, и результаты обновились. В отличие от стандартной консоли, код набирается один раз, сохраняется в файле, и вы можете работать с ним столько, сколько нужно.
Каждый блок вычислений обрамляется ключевыми словами _beg_ и _end_. Результат можно вывести прямо в строке с помощью оператора ? или сгруппировать в конце с помощью out().
Пример 1: Простые вычисления Находим гипотенузу прямоугольного треугольника и вычисляем синусы углов.
_beg_
a = 5
b = 50
# ?.4 - оператор печати (округление до 4 знаков)
c = (a**2 + b**2)**0.5 ?.4 50.2494
# out() выводит данные единым блоком после end
# out(f"Гипотенуза = {c:.2f}") # Только для Python 3
out("Гипотенуза = {:.2f}".format(c))
sin_a = a / c
# out(f"sin_a = {sin_a:.5f}") # Только для Python 3
out("sin_a = {:.5f}".format(sin_a))
sin_b = b / c
# out(f"sin_b = {sin_b:.5f}") # Только для Python 3
out("sin_b = {:.5f}".format(sin_b))
_end_
# > Гипотенуза = 50.25
# > sin_a = 0.09950
# > sin_b = 0.99504Пример 2: Использование длинных строк С помощью обратного слэша длинную строку можно разбить на несколько более коротких.
_beg_
a = 1.1
b = 2.1
c = 3.1
d = (sin(a+b)- cos(a-b))*2 + (sin(a+c)- cos(a-c))*3 + (sin(a+c)- cos(a-c))*2
d ? -3.474498
e = (sin(a+b)- cos(a-b))*2 \
+ (sin(a+c)- cos(a-c))*3 + \
(sin(a+c)- cos(a-c))*2
e ? -3.474498
_end_Пример 3: Работа с коллекциями и модулями Поэлементное умножение случайно сгенерированных списков.
_beg_
import random
my_tuple = tuple(random.randint(1, 10) for _ in range(10))
my_list = [random.randint(1, 10) for _ in range(10)]
result = [my_tuple[i] * my_list[i] for i in range(10)]
# Определение однострочной функции
def get_stats(data): return min(data), max(data), sum(data) / float(len(data))
result_min, result_max, result_mean = get_stats(result)
out("РЕЗУЛЬТАТ: мин={}, макс={}, среднее={:.2f}".format(result_min, result_max, result_mean))
_end_
# > РЕЗУЛЬТАТ: мин=4, макс=72, среднее=41.40💡 Больше примеров: Более 60 примеров использования различных аспектов среды собраны в файлах examples2.md (для Python 2) и examples3.md (для Python 3). Большинство примеров одинаковы для обоих версий.
Системные требования:
- Редактор Notepad++ (протестировано на версии 8.9.3 64-bit).
- Плагин PythonScript. NppPyInline универсален и поддерживает как версии плагина (Python 3.14+), так и (Python 2.7+) - два отдельных скрипта.
Шаги установки:
- Установите плагин Python Script через менеджер плагинов Notepad++: Плагины (Plugins) → Управление плагинами... (Plugins Admin). Найдите в списке PythonScript и установите его.
- Плагин PythonScript при первом использовании не всегда автоматически создает нужную папку scripts. Поэтому сделайте следующее:
- При обычной установке Notepad++: скрипты нужно положить в %APPDATA%\Notepad++\plugins\config\PythonScript\scripts
- При Portable версии Notepad++: скрипты нужно положить в (папка с notepad++.exe)\plugins\config\PythonScript\scripts
- Если папки PythonScript\scripts нет — создайте их вручную. В каталог scripts положите файл скрипта (например, npp_py_inline2.py).
- Перейдите в главное меню: Плагины → Python Script → Configuration.... Добавьте загруженный вами скрипт из секции User Scripts в секцию Menu items. Перезапустите Notepad++.
- Назначьте клавишу быстрого доступа для запуска скрипта. Для этого перейдите в главное меню: Опции → Горячие клавиши → Плагины (в русской версии). Обычно ближе к концу таблицы вы найдете ваш скрипт. Установите для него удобную комбинацию клавиш.
Как узнать свою версию Python в Notepad++? В главном меню выберите Плагины -> Python Script -> Show Console. В первой же строчке открывшейся внизу консоли будет указана точная версия интерпретатора (например, Python 3.14.3 или Python 2.7.18).
Как использовать:
- Напишите код между
_beg_и_end_в любом текстовом файле. - Поставьте курсор на любую строку внутри этого блока.
- Выполните скрипт.
NppPyInline работает поверх текстового буфера Scintilla (в Notepad++) и использует встроенные функции Python (eval и exec). Математика, переменные и типы данных работают точно так же, как в стандартном Python.
Однако NppPyInline не является полноценным интерпретатором Python. Его архитектура основана на строгом построчном выполнении. Главный цикл берет одну строку, передает парсеру, затем вычислителю и форматеру. Отсюда вытекают жесткие ограничения среды.
- Нет многострочных управляющих конструкций: Классические
if/elif/else,for,whileв несколько строк не поддерживаются. - Нет многострочного объявления функций/классов: Блочные
defиclassнедопустимы. - Нет стандартного I/O: Функции
print()иinput()отключены, так как у среды нет консоли — интерфейсом является сам текст.
Допустимые альтернативы:
- Вместо блочного
ifиспользуйте тернарный оператор или запись в одну строку:if x > 0: y = 10. - Вместо блочных
defиспользуйтеlambdaили однострочные функции:def func(x,y): return (x2 + y2).
Блоки кода, заключенные между _beg_ и _end_, полностью независимы. При каждом новом запуске блока его окружение (состояние переменных) создается с нуля, а по завершении выполнения — уничтожается. Данные из одного блока недоступны в другом.
Печатает результат вычисления прямо в строке кода. Имеет флаги модификации:
?— базовый вывод:x = 10 / 3 ? 3.333333333?.N— округление до N знаков:pi_val = math.pi ?.2 3.14?h— вывод в HEX формате:mask = 255 ?h 0xff?b— вывод в бинарном формате:flags = 5 ?b 0b101
Формирует вывод в самом конце блока (после _end_).
out(*args)— аналогprint(). Склеивает аргументы через пробел.row(title, *rows)— формирует красивую ASCII-таблицу. Принимает заголовок и итерируемые объекты (минимум 2 элемента).
При повторном запуске скрипта старые результаты автоматически удаляются, а на их место записываются новые. Ошибки синтаксиса или выполнения печатаются прямо в проблемной строке и так же удаляются после исправления.
Управлять поведением NppPyInline можно, объявляя специальные переменные внутри блока _beg_ ... _end_. Режимы действуют только локально внутри конкретного блока.
_digits_ = N— устанавливает глобальное количество знаков после запятой для текущего блока вычислений (по умолчанию 10)._clean_ = 1— принудительно удаляет все ранее распечатанные результаты текущего блока. (Сообщения об ошибках остаются до их устранения)._debug_ = 1— включает режим отладки. Результаты всех операций выводятся принудительно, даже если не установлен оператор?._bitwise_ = 1— Внимание: изменяет стандартный синтаксис Python! Логические операторыandиorзаменяются на побитовые&и|. Также становится доступным ключевое словоxor. Режим включается локально только по явному запросу пользователя.
Библиотека _math_ загружается в среду автоматически.
- Вызов
_help_(или_help_ all) откроет новую вкладку в Notepad++ со списком всех функций библиотекиmath. - Вызов
_help_ <имя_функции>(например,_help_ sin) извлечет__doc__и выведет подробную документацию по конкретному объекту. - Ключевое слово
_man_на пустой строке автоматически откроет или создаст файлnpp_py_inline.txtв соседней вкладке — это ваша личная шпаргалка для заметок.