Изменение кода 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 +ПРОБЕЛ.
При открытии списка завершения можно искать нужное завершение с помощью клавиш со стрелками, мыши или продолжения ввода. Чем больше букв вы вводите, чем точнее фильтруется список для отображения возможных автозавершений. Кроме того, можно использовать следующие ярлыки:
- Введите буквы, которые не находятся в начале имени, например "синтаксический анализ", чтобы найти "argparse"
- Введите только буквы, которые находятся в начале слов, например abc, чтобы найти "AbstractBaseClass" или "air", чтобы найти "as_integer_ratio"
- Пропустить буквы, например b64, чтобы найти base64
Далее приводятся некоторые примеры.
Завершения элементов автоматически отображаются при вводе точки после переменной или значения. Вместе с ними отображаются методы и атрибуты потенциальных типов. Если переменная может быть несколькими типами, список включает все возможности из всех типов. Дополнительные сведения отображаются, чтобы указать, какие типы поддерживают каждое завершение. Если все возможные типы поддерживают завершение, заметки не отображаются.
По умолчанию элементы dunder (начало и завершение с двойным подчеркиванием) не отображаются. Как правило, такие члены не должны обращаться напрямую. Если вам нужно использовать дендер, введите ведущий двойной подчеркивание, чтобы добавить эти завершения в список:
Операторы import
и from ... import
отображают список модулей, которые можно импортировать. Инструкция from ... import
создает список, включающий элементы, которые можно импортировать из указанного модуля.
При использовании операторов raise
и except
отображаются списки классов, которые могут быть типами ошибок. Список может не включать все пользовательские исключения, но помогает быстро найти подходящие встроенные исключения:
При @ выборе символа начинается декоратор и отображаются потенциальные декораторы. Многие из этих элементов не являются пригодными для использования как декораторы. Проверьте документацию по библиотеке, чтобы определить, какой декоратор следует использовать.
Дополнительные сведения см. в разделе "Параметры- результаты завершения".
Подсказки по типам
Подсказки типов доступны в Visual Studio 2017 версии 15.7 и более поздних версиях.
Подсказки по типам в Python 3.5+ (PEP 484 (python.org) — это синтаксис аннотаций для функций и классов, который указывает на типы аргументов, возвращаемых значений и атрибутов класса. IntelliSense отображает подсказки по типам при наведении курсора на вызовы функций, аргументы и переменные с этими аннотациями.
В следующем примере Vector
класс объявляется как тип List[float]
, а scale
функция содержит подсказки типов как для его аргументов, так и возвращаемого значения. При наведении указателя на вызов этой функции отображаются следующие подсказки по типам:
В следующем примере вы можете увидеть, как атрибуты аннотированных атрибутов Employee
класса отображаются во всплывающем окну завершения IntelliSense для атрибута:
Кроме того, полезно проверить указания типов в проекте, так как ошибки обычно не отображаются до времени выполнения. Для этого Visual Studio интегрирует стандартное средство Mypy отрасли с помощью команды контекстного меню Python>Run Mypy в Обозреватель решений:
При необходимости выполните командную строку, чтобы установить пакет 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 в этом коде вызывает следующую ошибку:
Примечание.
В версиях Python, предшествующих 3.5, в Visual Studio также отображаются подсказки по типам, которые вы предоставляете через файлы-заглушки (.pyi). Файлы заглушки можно использовать, если вы не хотите включать подсказки типов непосредственно в код или создавать подсказки типов для библиотеки, которая не использует их напрямую. Дополнительные сведения см. в статье "Создание заглушки для модулей Python" в вики-сайте проекта Mypy.
Visual Studio в настоящее время не поддерживает указания типов в комментариях.
Справка по сигнатурам
При написании кода, вызывающего функцию, помощь сигнатуры появляется при вводе открывающей скобки (
. В нем отображаются доступные сведения о документации и параметрах. Вы можете получить доступ к сигнатуре с помощью сочетания клавиш CTRL+SHIFT+ПРОБЕЛ внутри вызова функции. Хотя отображаемые сведения определяются строками документации в исходном коде функции, они содержат любые значения по умолчанию.
Совет
Чтобы отключить справку сигнатуры, перейдите в раздел >"Параметры>текстового редактора>Python"> Снимите сведения о параметре завершения>инструкции проверка box.
Вывод кратких сведений
При наведении указателя мыши на идентификатор отображается подсказка. В зависимости от идентификатора быстрые сведения могут отображать потенциальные значения или типы, любую доступную документацию, типы возвращаемых данных и расположения определений:
Цветовая маркировка синтаксиса
Цветовая маркировка синтаксиса — это функция, которая использует сведения, основанные на анализе кода, для выделения цветом переменных, операторов и других частей кода. Переменные, ссылающиеся на модули или классы, могут отображаться в другом цвете, отличном от функций или других значений. Имена параметров могут отображаться в другом цвете, отличном от локальных или глобальных переменных. По умолчанию функции не отображаются полужирным шрифтом.
Чтобы настроить цвета, перейдите к разделу ">Параметры параметров>среды>" и "Цвета". В списке отображаемых элементов измените требуемые записи Python :
Вставка фрагментов кода
Фрагменты кода — это фрагменты кода, которые можно вставить в файлы с помощью сочетания клавиш и выбора вкладки. Вы также можете использовать команду 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 можно перемещаться между выделенным именем функции и аргументами:
Просмотр доступных фрагментов кода
Доступные фрагменты кода можно просмотреть в диспетчере фрагментов кода. Получите доступ к этой функции из диспетчера фрагментов кода инструментов>и выберите Python в качестве языка:
Сведения о том, как создать собственные фрагменты кода, см. в статье Пошаговое руководство. Создание фрагмента кода.
Если вы написали качественный фрагмент кода, к которому вы хотите предоставить общий доступ, разместите его в репозитории и сообщите нам. Мы могли бы включить его в будущий выпуск Visual Studio.
Навигация по коду
Поддержка Python в Visual Studio предоставляет несколько способов быстрого перехода в код, включая библиотеки, для которых доступен исходный код. Библиотеки с исходным кодом для панели навигации, "Перейти к определению", "Перейти к" и "Найти все ссылки". Можно также использовать обозреватель объектов Visual Studio.
Панель навигации
Панель навигации отображается в верхней части каждого окна редактора и содержит двухуровневый список определений. В раскрывающемся списке слева содержатся определения класса верхнего уровня и функций в текущем файле. В правом раскрывающемся списке отображается список определений в область, показанных слева. При перемещении курсора в редакторе эти списки обновляются для отображения текущего контекста, при этом из них можно напрямую перейти к нужной записи.
Совет
Чтобы скрыть панель навигации, выберите Инструменты>Параметры>Текстовый редактор>Python>Общие и снимите флажок Параметры>Панель навигации.
Перейти к определению
Команда "Перейти к определению " быстро переходит от использования идентификатора (например, имени функции, класса или переменной) к расположению определения исходного кода. Чтобы вызвать команду, щелкните правой кнопкой мыши идентификатор и выберите "Перейти к определению " или поместите курсор в идентификатор и выберите F12. Команда работает в коде и внешних библиотеках, где доступен исходный код. Если исходный код библиотеки недоступен, переход к import
соответствующему оператору для ссылки на модуль или отображает ошибку.
Перейти
Команда Edit>Go To (CTRL+,) отображает поле поиска в редакторе, где можно ввести любую строку и увидеть возможные совпадения в коде, который определяет функцию, класс или переменную, содержащую эту строку. Она обеспечивает те же возможности, что и команда Перейти к определению, но без необходимости искать, где используется идентификатор.
Чтобы перейти к определению этого идентификатора, дважды щелкните любое имя или выберите имя со стрелками, за которыми следует ВВОД.
Найти все ссылки
Функция "Найти все ссылки" — это полезный способ обнаружения того, где определяется и используется любой заданный идентификатор, включая импорт и назначения. Чтобы вызвать команду, щелкните идентификатор правой кнопкой мыши и выберите " Найти все ссылки" или поместите курсор в идентификатор и выберите SHIFT+F12. Чтобы перейти к расположению элемента, нужно дважды щелкнуть его в списке.