Шаг 3. Использование интерактивного окна REPL
Интерактивное окно Visual Studio для Python предоставляет цикл REPL (read–eval–print loop), который значительно сокращает обычный цикл "редактирование — сборка — отладка". Интерактивное окно предоставляет все возможности REPL, доступные в командной строке Python. Оно также упрощает обмен кодом с помощью исходных файлов в редакторе Visual Studio, что довольно затруднительно сделать с помощью командной строки.
Для решения проблем с REPL обязательно установите пакеты ipython и ipykernel . Сведения об установке пакетов см. в статье Справочная информация по вкладкам окна "Окружения Python".
Чтобы открыть интерактивное окно, в обозревателе решений щелкните правой кнопкой мыши среду Python проекта (например, Python 3.6 (32-разрядная версия), как на рисунке выше) и выберите пункт Открыть интерактивное окно. Также можно выбрать в главном меню Visual Studio Вид > Другие окна > Интерактивные окна Python.
Интерактивное окно открывается под окном редактора со стандартной командной строкой REPL Python >>>. С помощью раскрывающегося списка Окружения можно выбрать определенный интерпретатор для работы. Если вы хотите увеличить интерактивное окно, перетащите разделитель между двумя окнами, как показано на следующем изображении:
Размеры любых окон в Visual Studio можно изменять, перетаскивая граничные разделители. Вы также можете перетаскивать окна за пределы окна Visual Studio и изменять их расположение внутри этого окна, как вам нравится. Подробные сведения см. в статье Настройка макетов окон.
Введите несколько операторов, например print("Hello, Visual Studio") , и выражений, например 123/456 , чтобы сразу увидеть результаты:
Когда вы начнете вводить многострочный оператор, например определение функции, в интерактивном окне отобразится подсказка Python … для продолжения строки. В отличие от командной строки REPL, она выставляет автоматический отступ. Можно добавить новую строку с … , нажав Shift+Enter :
Все элементы, вводимые в интерактивном окне, записываются в журнал. В нем также, в отличие от командной строки REPL, сохраняются многострочные элементы. Например, вместо того чтобы повторно создавать функцию по одной строке, можно просто восстановить все определение функции f как единое целое и изменить имя на make_double .
Visual Studio может передавать несколько строк кода из окна редактора в интерактивное окно. Эта возможность позволяет хранить код в исходном файле и легко передавать выбранные фрагменты в интерактивное окно. После этого с такими фрагментами кода можно работать в удобной среде REPL вместо того, чтобы выполнять всю программу. Чтобы увидеть, как работает эта функция, замените цикл for в файле PythonApplication1.py следующим кодом:
Выберите операторы функций import , from и make_dot_string в файле .py. Щелкните правой кнопкой мыши выделенный текст и выберите Отправить код в интерактивное окно (или нажмите клавиши Ctrl+ВВОД). Фрагмент кода будет немедленно вставлен в интерактивное окно, после чего начнется его выполнение. Так как код определил функцию, можно быстро проверить эту функцию, вызвав ее несколько раз:
Если в редакторе не выделен фрагмент, при нажатии клавиш CTRL+ВВОД в интерактивном окне выполнится текущая строка кода, а курсор автоматически установится в следующей строке. Это позволяет легко выполнять код в пошаговом режиме, многократно нажимая клавиши CTRL+ВВОД, что невозможно при использовании командной строки Python. Таким образом также возможно пошаговое выполнение кода без запуска отладчика, в том числе не с самого начала программы.
Кроме того, можно скопировать и вставить несколько строк кода, например приведенный ниже фрагмент, в интерактивное окно из любого источника, что трудно сделать с помощью командной строки REPL для Python. При вставке интерактивное окно запускает этот код так же, как при вводе с клавиатуры.
Как можно заметить, код работает, но его выходные данные далеки от совершенства. Другое значение шага в цикле for сделает косинусоиду более наглядной. Весь цикл "for" доступен в журнале REPL одним целым. Можно вернуться и внести любые необходимые изменения, а затем снова протестировать функцию. Сначала восстановите цикл for , нажав клавишу со стрелкой вверх. Чтобы перемещаться по коду, нажимайте клавиши со стрелками влево и вправо (пока вы не сделаете это, при нажатии клавиш со стрелками вверх и вниз будет происходить переход по журналу). Перейдите к спецификации range и измените ее на range(0, 360, 12) . Затем нажмите клавиши CTRL+ВВОД в любом месте кода, чтобы снова выполнить весь оператор:
Повторяйте эту процедуру, пробуя различные значения шага, пока не найдете оптимальное. Можно также сделать так, чтобы волна повторялась, увеличив диапазон, например range(0, 1800, 12) .
Если вас устраивает код в интерактивном окне, выберите его. Затем щелкните код правой кнопкой мыши и выберите Скопировать код (Ctrl+Shift+C). Наконец, вставьте выбранный код в редактор. Обратите внимание на то, что при использовании этой возможности в Visual Studio автоматически пропускаются выходные данные, а также подсказки >>> и . . Например, на приведенном ниже рисунке показано использование команды Копировать код применительно к выделенному фрагменту, включающему приглашения и выходные данные:
При вставке в редакторе остается только код:
Чтобы скопировать содержимое интерактивного окна полностью, включая подсказки и выходные данные, используйте стандартную команду Копировать.
Итак, вы обработали небольшой фрагмент кода с помощью среды REPL в интерактивном окне, а затем легко добавили этот код в исходный файл проекта. Если снова выполнить этот код с помощью клавиш CTRL+F5 (или команды Отладка > Начать без отладки), отобразятся требуемые результаты.