Изменение кода 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.

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

  • Введите буквы, которые не находятся в начале имени, например "синтаксический анализ", чтобы найти "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.

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

Снимок экрана: завершение декоратора в редакторе 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 также отображаются подсказки по типам, которые вы предоставляете через файлы-заглушки (.pyi). Файлы заглушки можно использовать, если вы не хотите включать подсказки типов непосредственно в код или создавать подсказки типов для библиотеки, которая не использует их напрямую. Дополнительные сведения см. в статье "Создание заглушки для модулей Python" в вики-сайте проекта Mypy.

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

Справка по сигнатурам

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

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

Совет

Чтобы отключить справку сигнатуры, перейдите в раздел >"Параметры>текстового редактора>Python"> Снимите сведения о параметре завершения>инструкции проверка box.

Вывод кратких сведений

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

Снимок экрана: сведения о отображении быстрых сведений в редакторе Visual Studio.

Цветовая маркировка синтаксиса

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Совет

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

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

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

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

Перейти

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

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

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

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

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

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