Hacker News Digest

24 августа 2025 г. в 12:28 • ericmjl.github.io • ⭐ 129 • 💬 69

OriginalHN

#python#code-generation#runtime-modification#monkey-patching#compiler#lisp#repl

Dynamically patch a Python function's source code at runtime

Как заменить код функции «на лету»

Python позволяет переписывать тело функции во время работы программы:

  1. Берём исходник новой функции как строку.

    new_src = "def f(x): return x * 2"
    
  2. Компилируем:

    code = compile(new_src, "<magic>", "exec")
    
  3. Выполняем в нужном пространстве имён:

    ns = {}
    exec(code, {}, ns)
    
  4. Подменяем старую функцию:

    f = ns["f"]
    

f(21) теперь возвращает 42.

Зачем это нужно

Такой трюк позволяет LLM-агентам генерировать и сразу запускать код с доступом к текущему контексту. Это удобно для ToolBot, но открывает огромную дыру в безопасности: любой сгенерированный код получает доступ ко всем переменным процесса.