Поделиться через


Изменение кода Python и использование Intellisense

Так как вы тратите большую часть времени разработки в редакторе кода, поддержка Python в Visual Studio предоставляет функциональные возможности для повышения производительности. К функциям относятся выделение синтаксиса IntelliSense, автозавершение, справка по подписи, переопределение методов, поиск и навигация.

Редактор кода интегрирован с интерактивным окном в Visual Studio. По мере работы легко обмениваться кодом между двумя окнами. Дополнительные сведения см. в руководстве по шагу 3: Использование интерактивного окна REPL и Использование команды "Отправить в интерактивное окно".

Выстраивание помогает сосредоточиться на определенных разделах кода. Общие сведения о редактировании кода в Visual Studio см. в разделе "Функции редактора кода".

Обозреватель объектов Visual Studio позволяет проверять классы Python, определенные в каждом модуле, и функции, определенные в этих классах. Вы можете получить доступ к этой функции в меню "Вид " или с помощью сочетания клавиш CTRL+ALT+J.

Использование функций IntelliSense

IntelliSense предоставляет автодополнения, справку по сигнатуре, быструю информацию и подсветку кода. Visual Studio 2017 версии 15.7 и более поздних версий также поддерживает указания типов.

Чтобы повысить производительность, IntelliSense в Visual Studio 2017 версии 15.5 и более ранних версий опирается на базу данных автозавершения, которая создается для каждой Python среды в проекте. При добавлении, удалении или обновлении пакетов базы данных может потребоваться обновить базу данных. Статус базы данных отображается в окне "Среды Python" (сопутствующее окно Обозреватель решений) на вкладке IntelliSense. Дополнительные сведения см. в справочнике по окну "Среды".

Visual Studio 2017 версий 15.6 и более поздних использует иной подход для предоставления завершений IntelliSense, которые не зависят от базы данных.

Автозавершения

Завершения отображаются как утверждения, идентификаторы и другие слова, которые можно ввести в текущей позиции в редакторе. Intellisense заполняет список параметров на основе контекста и фильтрует несоответствующие или отвлекающие элементы. Завершения часто активируются путем ввода различных выражений (таких как import) и операторов (включая точку), но они могут появляться в любое время, если выбрать сочетание клавиш Ctrl+J +Пробел.

Снимок экрана: завершение члена с помощью Intellisense в редакторе Visual Studio.

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

  • Введите буквы, которые не находятся в начале имени, например "parse", чтобы найти "argparse".
  • Введите только буквы, которые находятся в начале слов, например abc, чтобы найти "AbstractBaseClass" или "air", чтобы найти "as_integer_ratio"
  • Пропустить буквы, например b64, чтобы найти base64

Ниже приведены некоторые примеры.

Снимок экрана, показывающий автозавершение члена с фильтрацией в редакторе Visual Studio.

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

Снимок экрана, показывающий автодополнение на нескольких типах в редакторе Visual Studio.

По умолчанию, "dunder" участники (которые начинаются и заканчиваются двойным подчеркиванием) не показываются. Как правило, к таким членам не следует получать доступ напрямую. Если вам нужно использовать два подчеркивания (дуандер), введите ведущие двойные подчеркивания, чтобы добавить эти завершения в список:

Снимок экрана: типы завершения частных элементов dunder в редакторе Visual Studio.

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

Снимок экрана: импорт и завершение импорта в редакторе Visual Studio.

Операторы raise и except отображают списки классов, которые, скорее всего, являются типами ошибок. Список может не включать все пользовательские исключения, но помогает быстро найти подходящие встроенные исключения:

Снимок экрана, показывающий обработку исключений в редакторе Visual Studio.

Выбор символа @ (at) инициирует декоратор и отображает возможные декораторы. Многие из этих элементов не являются пригодными для использования как декораторы. Проверьте документацию по библиотеке, чтобы определить, какой декоратор следует использовать.

Снимок экрана: завершение декоратора в редакторе Visual Studio.

Дополнительные сведения см. в разделе «Параметры — результаты завершения».

Подсказки типов

Подсказки типов доступны в Visual Studio 2017 версии 15.7 и более поздних версиях.

"Подсказки типов" в Python 3.5+ (PEP 484 (python.org) — это синтаксис заметки для функций и классов, указывающих типы аргументов, возвращаемых значений и атрибутов класса. IntelliSense отображает подсказки типов данных при наведении указателя мыши на вызовы функций, аргументы и переменные с такими аннотациями.

В следующем примере Vector класс объявляется как тип List[float], а scale функция содержит подсказки типов как для его аргументов, так и возвращаемого значения. При наведении указателя мыши на вызов этой функции отображаются указания типов:

Снимок экрана, на котором показано, как навести указатель мыши на вызов функции для отображения подсказок типа.

В следующем примере вы можете увидеть, как аннотированные атрибуты класса Employee отображаются во всплывающем окне завершения предложений IntelliSense для атрибута:

Снимок экрана: завершение IntelliSense для класса с указаниями типа.

Кроме того, полезно проверить аннотации типов в проекте, потому что ошибки обычно не появляются до времени выполнения. Для этого Visual Studio интегрирует стандартное средство Mypy отрасли с помощью команды контекстного меню Python>Run Mypy в обозревателе решений:

Скриншот, показывающий доступные команды линтинга для проектов на Python в Проводнике решений.

Запуск команды предложит вам установить пакет Mypy, если это необходимо. Затем Visual Studio запускает Mypy для проверки подсказок типов в каждом файле Python в проекте. Ошибки отображаются в окне списка ошибок Visual Studio. Выбор элемента в окне переходит к соответствующей строке в коде.

В качестве простого примера следующее определение функции содержит указание типа, указывающее, что input аргумент является типом str, в то время как вызов этой функции пытается передать целое число:

def commas_to_colons(input: str):
    items = input.split(',')
    items = [x.strip() for x in items]
    return ':'.join(items)

commas_to_colons(1)

При использовании команды Run Mypy в этом коде возникает следующая ошибка:

Снимок экрана, на котором показан пример результата проверки подсказок типа с помощью Mypy.

Замечание

Для версий Python до 3.5 Visual Studio также отображает подсказки типов, которые предоставляются с помощью файлов заглушки Typeshed (.pyi). Файлы заглушки можно использовать, если вы не хотите включать подсказки типов непосредственно в код или создавать подсказки типов для библиотеки, которая не использует их напрямую. Дополнительные сведения см. в статье "Создание заглушек для модулей Python" на вики проекта Mypy.

Visual Studio в настоящее время не поддерживает указания типов в комментариях.

Помощь по сигнатурам

При написании кода, вызывающего функцию, помощь сигнатуры появляется при вводе открывающей скобки (. В нем отображаются доступные сведения о документации и параметрах. Вы можете получить доступ к подсказке параметров с помощью сочетания клавиш Ctrl+Shift+Пробел внутри вызова функции. Отображаемые сведения зависят от строк документации в исходном коде функции, но содержат любые значения по умолчанию.

Снимок экрана, показывающий помощь по параметрам в редакторе Visual Studio.

Подсказка

Чтобы отключить подсказки по функциям, перейдите в "Параметры Текстовый редактор Python Общие". Снимите флажок "Завершение инструкции>Сведения о параметрах".

Краткие сведения

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

Снимок экрана, демонстрирующий отображение быстрой информации в редакторе Visual Studio.

Цвет кода

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

Снимок экрана: цвет кода и синтаксиса в редакторе Visual Studio.

Чтобы настроить цвета, перейдите к разделу ">Параметры>Среда>Шрифты и цвета. В списке отображаемых элементов измените требуемые записи Python :

Снимок экрана: параметры шрифтов и цветов в Visual Studio.

Вставка фрагментов кода

Фрагменты кода — это фрагменты кода, которые можно вставить в файлы с помощью сочетания клавиш и выбора вкладки. Вы также можете использовать команду Edit>IntelliSense>Insert Snippet and Surround With , выбрать Python и выбрать нужный фрагмент кода.

Например, class это ярлык для фрагмента кода, который вставляет определение класса. Фрагмент кода отображается в списке автозаполнения при вводе class:

Снимок экрана: фрагмент кода для ярлыка класса.

При выборе tab создается остальная часть класса. Затем можно изменить название и список баз, перемещаться между выделенными полями с помощью клавиши Tab и нажать Enter, чтобы начать ввод текста.

Снимок экрана, на котором выделены зоны фрагмента кода, которые нужно завершить.

При использовании команды меню IntelliSense "Изменить фрагмент кода", сначала выберите Python, а затем выберите нужный фрагмент кода:

Снимок экрана: выбор фрагмента кода с помощью команды

Команда Edit>IntelliSense>Surround With помещает текущий выбор в текстовый редактор в выбранный структурный элемент. Предположим, у вас был фрагмент кода, как в следующем примере:

sum = 0
for x in range(1, 100):
    sum = sum + x

При выборе этого кода и команды "Обрамить" отображается список доступных фрагментов. При выборе def из списка фрагментов выделенный код будет размещён внутри определения функции. С помощью клавиши TAB можно перемещаться между выделенным именем функции и аргументами:

Снимок экрана, который показывает, как использовать команду Surround With для фрагментов кода.

Проверка доступных фрагментов

Доступные фрагменты кода можно просмотреть в диспетчере фрагментов кода. Получите доступ к этой функции издиспетчера фрагментов кода> и выберите Python в качестве языка:

Снимок экрана: диспетчер фрагментов кода в Visual Studio.

Чтобы создать собственные фрагменты кода, см. пошаговое руководство. Создание фрагмента кода.

Если вы пишете отличный фрагмент кода, который вы хотите поделиться, вы можете опубликовать его в gist и сообщите нам об этом. Мы могли бы включить его в будущий выпуск Visual Studio.

Поддержка Python в Visual Studio предоставляет несколько способов быстрого перехода в код, включая библиотеки, для которых доступен исходный код. Библиотеки с исходным кодом для панели навигации, "Перейти к определению", "Перейти к" и "Найти все ссылки". Вы также можете использовать браузер объектов Visual Studio.

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

Снимок экрана: панель навигации в редакторе Visual Studio.

Подсказка

Чтобы скрыть панель навигации, перейдите в Инструменты>Параметры>текстовый редактор>Python>Общие и снимите флажок с панель навигации.

Перейти к определению

Команда "Перейти к определению " быстро переходит от использования идентификатора (например, имени функции, класса или переменной) к расположению определения исходного кода. Чтобы вызвать команду, щелкните правой кнопкой мыши идентификатор и выберите "Перейти к определению " или поместите курсор в идентификатор и выберите F12. Команда работает в коде и внешних библиотеках, где доступен исходный код. Если исходный код библиотеки недоступен, Переход к определению переходит к соответствующему import оператору ссылки на модуль или отображает ошибку.

Снимок экрана: команда

Перейти к

Команда Edit>Go To (CTRL+,) отображает поле поиска в редакторе, где можно ввести любую строку и увидеть возможные совпадения в коде, который определяет функцию, класс или переменную, содержащую эту строку. Эта функция предоставляет аналогичную возможность, как "Перейти к определению ", но не имея необходимости находить использование идентификатора.

Чтобы перейти к определению этого идентификатора, дважды щелкните любое имя или выберите имя стрелочными клавишами и нажмите ВВОД.

Снимок экрана: команда Go To в Visual Studio.

Найти все ссылки

Функция "Найти все ссылки" — это полезный способ обнаружения того, где определяется и используется любой заданный идентификатор, включая импорт и назначения. Чтобы вызвать команду, щелкните идентификатор правой кнопкой мыши и выберите " Найти все ссылки" или поместите курсор в идентификатор и выберите SHIFT+F12. Дважды щелкнув элемент в списке, перейдите к его расположению.

Снимок экрана: результаты поиска всех ссылок в Visual Studio.