Игорь Градов
Игорь Градов
6 мин
ai

Лямбда-функции Python без копипаста: splime вызывает код по имени из любого проекта

Разработчики на Python, которые работают с рублёвыми суммами и банковскими выписками, знают эту ситуацию: одна и та же функция очистки данных живёт в пяти проектах пятью разными копиями, и баг, починенный в одной, спокойно остаётся в четырёх других.

Лямбда-функции Python без копипаста: splime вызывает код по имени из любого проекта
Почему это важно

Инструмент splime позволяет опубликовать Python-функцию один раз и вызывать её по имени из любого проекта на той же машине, без копирования кода, без создания отдельного пакета и без HTTP-обвязки.

Проблема знакома каждому, кто парсит платёжки, импортирует заказы или готовит отчёты для бухгалтерии. Функция clean_amount, которая превращает строку «1 234,50 ₽» в число 1234.5, пишется заново в каждом новом скрипте. Где-то забыт неразрывный пробел, где-то не учтён минус у отрицательных сумм. Splime, открытый инструмент для переиспользования Python-функций, решает именно эту задачу. Ниже полный цикл: от установки до рабочего вызова.

Что понадобится?

  • Python 3.13 или новее
  • Терминал с доступом к pip
  • Пять минут на установку и первый вызов
  • Для удалённого запуска (не обязательно на старте) аккаунт на splime.io

Облачный аккаунт, токены и регистрация для локальной работы не нужны. Всё работает на вашей машине сразу после установки.

Пошаговая инструкция

1. Установите splime и запустите локальный демон (фоновый процесс, который хранит ваши функции и запускает их в любом проекте)

pip install splime
spl-daemon serve  # поднимет локальный демон на http://127.0.0.1:8765

Демон работает только на вашей машине. Никаких данных наружу он не отправляет.

2. Опубликуйте функцию как ноду (версионированную переносимую единицу кода)

from spl import SPLClient

def clean_amount(raw: str) -> float:
    """'1 234,50 ₽' -> 1234.5"""
    cleaned = raw.replace(" ", "").replace("\xa0", "").replace("₽", "")
    # \xa0 — неразрывный пробел, который часто встречается в банковских выписках
    return float(cleaned.replace(",", "."))

client = SPLClient()  # работает локально, без токенов
client.publish(clean_amount, name="clean_amount")

После publish функция сохранена в локальной библиотеке. Повторно писать её код не нужно.

3. Вызовите функцию по имени из любого другого скрипта

from spl import SPLClient

client = SPLClient()
result = client.call("clean_amount", kwargs={"raw": "1 234,50 ₽"})
print(result.output)  # 1234.5
print(result.mode)    # "local"

Обратите внимание: во втором скрипте нет ни импорта clean_amount, ни копии кода. Только имя.

4. При необходимости вызовите функцию на удалённой машине

Если функции нужен GPU или доступ к базе данных, которой нет на вашем компьютере, достаточно указать, где выполнять:

result = client.call(
    "score_batch",
    kwargs={"date": "2026-06-08"},
    target_machine="gpu-box",  # выполнить там, где живут данные
)
print(result.mode)  # "server"

Код не переезжает вручную. Вы зовёте ноду по имени, а выполняется она там, где указано. Для удалённого запуска нужно подключить демон целевой машины к серверу splime на splime.io.

Что возвращает вызов?

Результат client.call содержит не только значение:

  • result.output — само значение (число, строка, объект)
  • result.mode — где выполнялось: local или server
  • result.artifacts — файлы, которые нода создала в процессе работы

Плюс у каждого запуска сохраняется история: что вызывали, с какими аргументами, чем завершилось. Это работает и при ошибках, что удобно для отладки парсеров банковских выписок, где форматы меняются без предупреждения.

Где splime не поможет?

Инструмент не заменяет оркестраторы вроде Airflow или Prefect. Он не гоняет пайплайны по расписанию и не строит сложные графы зависимостей (DAG, направленный ациклический граф, то есть цепочка задач, где каждая зависит от предыдущей). Ноды splime можно вызывать внутри такого оркестратора, но планировщиком он не является.

Для массивной параллельности, когда нужно размазать одну задачу на сотни ядер, есть Ray и похожие инструменты. Splime решает другую задачу: версии, переносимость и вызов функции по имени.

Публичного маркетплейса кода splime не строит. Ноды приватные, видны только вам.

Как это применить

Допустим, у вас три проекта: парсер банковских выписок, импортёр заказов из интернет-магазина и ежемесячный отчёт для бухгалтерии. Во всех трёх нужна функция очистки рублёвых сумм. Без splime вы копируете clean_amount три раза. Находите баг с неразрывным пробелом \xa0 в парсере, чините, а в двух других копиях он остаётся. С splime вы публикуете clean_amount один раз, правите в одном месте, а вызов client.call("clean_amount", kwargs={"raw": "1 234,50 ₽"}) во всех трёх проектах автоматически использует исправленную версию.

Для тех, кто работает с лямбда-функциями Python и привык к коротким анонимным конструкциям: splime публикует именованные функции, не лямбда-функции Python. Лямбда-функции Python удобны для одноразовых преобразований внутри одного скрипта, но переиспользовать их между проектами по имени не получится. Splime как раз закрывает этот разрыв: вы пишете полноценную функцию, даёте ей имя и дальше зовёте отовсюду.

Частые ошибки
  • Забыть запустить демон. Без spl-daemon serve вызов client.call не найдёт опубликованные ноды. Демон должен работать в фоне.
  • Использовать Python ниже 3.13. Пакет требует Python 3.13 или новее. На 3.11 или 3.12 установка пройдёт, но поведение не гарантировано.
  • Ожидать пайплайн. Splime не запускает цепочки задач по расписанию. Если нужен DAG из десяти шагов, используйте Airflow или Prefect, а внутри них вызывайте ноды splime.
  • Путать локальный и удалённый режим. Без подключения к серверу splime target_machine работать не будет. Для чисто локальной работы этот параметр не нужен.

Что с этого вам?

Разработчику, который парсит банковские выписки и рублёвые суммы. Вместо пяти копий clean_amount с разными багами одна нода, один вызов. Починили обработку неразрывного пробела в одном месте, все проекты получили исправление.

Автору Дзена, который автоматизирует сбор данных для статей. Если вы пишете скрипты для парсинга статистики каналов или агрегации данных, splime позволяет собрать библиотеку полезных функций без возни с пакетами и зависимостями.

Предпринимателю или фрилансеру в РФ. Инструмент работает полностью локально, без привязки к зарубежным облакам. Данные не уходят на внешние серверы. Для команды из двух-трёх человек, которая ведёт несколько проектов на Python, это способ перестать терять время на синхронизацию одинакового кода.

Мнение редакции dzen.guru

Splime решает узкую, но реальную задачу. Я проверил цикл «опубликовал, вызвал из другого скрипта» и он действительно занимает шесть строк. По моим наблюдениям, главная ценность не в экономии на pip-пакете, а в том, что исправление бага происходит в одном месте. Для тех, кто работает с парсерами рублёвых сумм и банковских выписок, это конкретная экономия нервов. Честная оговорка: инструмент молодой, требует Python 3.13+, а документация пока ограничена серией статей автора. Для продакшена с высокой нагрузкой он не предназначен. Но для повседневной разработки, где одни и те же десять строк кочуют из проекта в проект, попробовать стоит.

Попробуйте нейросети для создания контента

Если вы автоматизируете рутину в коде, попробуйте автоматизировать и создание контента. На dzen.guru собраны инструменты, которые помогают авторам Дзена работать быстрее.

Перейти к инструментам

Шесть строк кода вместо пяти копий с разными багами. Установите splime, опубликуйте свою clean_amount и проверьте, работает ли вызов из второго скрипта. Это займёт пять минут, а копировать функции между проектами больше не придётся.

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

VK заменила ручную разметку 500 млн роликов нейросетью для поиска видео по описанию
ai

VK заменила ручную разметку 500 млн роликов нейросетью для поиска видео по описанию

Разметка видео вручную при базе в 500 миллионов роликов превращается в бутылочное горлышко: инструкции разрастаются, асессоры не успевают, а пики нагрузки…

5 мин
Кризис в журналистике США оставил инструкцию: как побеждать при 100 заявках на слот
ai

Кризис в журналистике США оставил инструкцию: как побеждать при 100 заявках на слот

Российские авторы массово выходят на фриланс, и конкуренция за заказы растёт каждый месяц, а в 2013 году американская журналистика уже прошла через точно такой…

7 мин
Claude агенты без фреймворков: 600 строк Python закрыли 954 задачи за 60 дней
ai

Claude агенты без фреймворков: 600 строк Python закрыли 954 задачи за 60 дней

Агенты Claude (ИИ-агенты, программы, которые сами выполняют задачи и передают работу друг другу) звучат как сложная инженерная история, но один разработчик из…

6 мин