Использование кода VS для отправки нескольких строк файла .py в интерактивную панель python

#python #visual-studio-code #rstudio #jupyter

Вопрос:

У меня возникли некоторые проблемы с перемещением многострочных фрагментов кода из сценария .py в интерактивную панель python в VS code. Для справки, я перехожу от использования Rstudio в качестве IDE и хотел бы получить такое же взаимодействие между сценариями и консолями, к которому я привык оттуда.

Например, если бы я попытался запустить следующие строки из сценария .py:

 def f(a):
    print(a)
 

Я могу запустить def f(a): строку, но вместо того, чтобы ждать запуска print(a) строки, интерактивная панель пытается запустить первую строку, что приводит к:

 IndentationError: expected an indented block (2416368674.py, line 1)
 

Я могу нормально запускать многострочные фрагменты, если выделю весь фрагмент и перенесу его на интерактивную панель.

Как правило, я просто хочу иметь возможность запускать многострочные блоки, функции и т. Д. строка за строкой с интерактивной панелью, знающей, что нужно подождать, если она должна ожидать большего количества кода. Я не хочу работать с упаковкой кода в ячейку. Есть ли способ это исправить?

Комментарии:

1. Ошибка говорит, что ваш отступ неверен,,, Это было бы первое место, с которого я бы начал. Python очень придирчив к отступам.

2. Я думаю, что отступ здесь не проблема, а то, что интерактивная панель просто выполняется def f(a): перед запуском следующей строки, где на самом деле происходит отступ. Если я выделю весь оператор функции и запущу его, он будет работать нормально без ошибок отступа.

Ответ №1:

Я боюсь, что вы не можете этого сделать, это неразумно.

Независимо от того, отправляете ли вы коды на интерактивную панель или в REPL в терминале, он автоматически запустит коды-с Enter помощью нажатия.

Вы хотите, чтобы он не Enter нажимал автоматически и ждал, пока вы нажмете его самостоятельно, или он может быть достаточно умен, чтобы знать, когда следует продолжать ждать следующих кодов.

Но почему бы не отправить фрагмент кода напрямую, а не строка за строкой, и не нажимать Enter автоматически, вместо Enter того чтобы каждый раз нажимать вручную?