TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.2K subscribers
Post #7234 3.43K
⚙️ Полезные хаки для Python REPL

Если вы часто открываете Python REPL — чтобы быстро протестировать идею, посчитать что-то, проверить фрагмент кода или преподавать Python — эти модификации могут серьёзно улучшить ваш опыт.


Начиная с Python 3.13, REPL поддерживает кастомные горячие клавиши, а с Python 3.14 — настройку подсветки синтаксиса.

Используя переменную окружения PYTHONSTARTUP, можно сделать так, чтобы при запуске REPL автоматически выполнялся код из файла (например, ~/.startup.py):
export PYTHONSTARTUP=$HOME/.startup.py


💡 Можно использовать библиотеку pyrepl-hacks, чтобы кастомизировать поведение REPL

Клавиатурные шорткаты:
_repl.bind("Home", "home")                   # В начало блока
_repl.bind("End", "end") # В конец блока
_repl.bind("Alt+M", "move-to-indentation") # В начало строки без пробелов
_repl.bind("Shift+Tab", "dedent") # Уменьшить отступ
_repl.bind("Alt+Up", "move-line-up") # Поднять строку
_repl.bind("Alt+Down", "move-line-down") # Опустить строку
_repl.bind_to_insert("Ctrl+N", "[2, 3, 5, 8]") # Быстрая вставка чисел
_repl.bind_to_insert("Ctrl+F", '["apple", "banana", "pear"]') # Быстрая вставка строк


Настройка цветовой схемы (пример для Solarized Light):
_repl.update_theme(
keyword="green",
builtin="blue",
comment="intense blue",
string="cyan",
number="cyan",
definition="blue",
soft_keyword="bold green",
op="intense green",
)


🔛 Все эти хаки завязаны на приватные модули Python — _pyrepl и _colorize.
🔛 Это означает, что при обновлении Python (например, до 3.15) что-то может перестать работать.
🔛 Но при желании можно просто отключить PYTHONSTARTUP и вернуть REPL в дефолтное состояние.

💡 Фишка с sys.path

Чтобы pyrepl-hacks работал во всех окружениях, автор добавляет путь к нему напрямую:
from pathlib import Path
import sys
sys.path.append(str(Path.home() / ".pyhacks"))


Пример кастомной команды:
import pyrepl_hacks as _repl

@_repl.bind("Ctrl+X Ctrl+R", with_event=True)
def subprocess_run(reader, event_name, event):
reader.insert("import subprocess\n")
code = 'subprocess.run("", shell=True)'
reader.insert(code)


Теперь комбинация Ctrl+X Ctrl+R автоматически вставит шаблон вызова subprocess.run().

💡 Зачем всё это

🌠 Чтобы сделать REPL похожим на любимый редактор кода — быстрым, интерактивным и удобным.
🌠 А библиотека pyrepl-hacks — просто красивая обёртка над внутренними модулями Python, которая делает эти хаки чище и проще.

Попробуйте:
pip install pyrepl-hacks


🐸 Библиотека питониста

#буст
  • 👍 7
  • ❤ 2
More from @pyproglib
  1. Oct 7, 2026🎓 С Днём учителя! Учиться никогда не поздно — особенно когда технологии меняются быстрее,…
  2. Oct 3, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  3. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  4. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  5. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  6. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →