Перейти к содержимому

Как вставить код в питон

  • автор:

Шаг 2. Написание и запуск кода

Хотя управление файлами проекта осуществляется в обозревателе решений, с содержимым файлов, например файлов исходного кода, вы обычно работаете в окне редактора. Редактор распознает тип редактируемого файла с учетом контекста. Он также определяет язык программирования (благодаря расширению файла) и обеспечивает характерные для этого языка возможности, например раскраску синтаксических конструкций и автоматическое завершение с помощью IntelliSense.

  1. При создании проекта «Python Application» в редакторе Visual Studio откроется пустой файл по умолчанию с именем PythonApplication1.py.
  2. В редакторе начните вводить print(«Hello, Visual Studio») . По мере ввода функция IntelliSense в Visual Studio покажет варианты автозавершения. Выделенный параметр в раскрывающемся списке — это вариант завершения по умолчанию, который применяется при нажатии клавиши TAB. Завершения очень удобны при использовании длинных инструкций или идентификаторов. IntelliSense auto-completion popup
  3. Функция IntelliSense отображает различные сведения на основе используемого оператора, вызываемой функции и т. д. Если в функции print ввести ( после print для указания вызова функции, будет показана полная информация об использовании этой функции. Во всплывающем окне IntelliSense также полужирным шрифтом выделяется текущий аргумент (в этом случае это value): IntelliSense auto-completion popup for a function
  4. Допишите оператор, чтобы он соответствовал следующему коду:

print("Hello, Visual Studio") 

IntelliSense syntax coloring and error highlighting

Обратите внимание на раскраску синтаксических конструкций, которая позволяет отличить оператор print от аргумента «Hello Visual Studio» . Можно ненадолго удалить последний символ » в строке. Обратите внимание, что код, содержащий синтаксические ошибки, подчеркивается красной линией в Visual Studio. Снова введите символ » , чтобы исправить ошибку.

Совет Visual Studio предоставляет полный контроль над внешним видом и поведением среды разработки, что позволяет настроить ее, как вам нравится. Выберите пункт меню Сервис>Параметры и изучите параметры на вкладках Среда и Текстовый редактор. По умолчанию вы видите ограниченный набор параметров. Чтобы просмотреть все параметры для каждого языка программирования, щелкните Показать все параметры внизу диалогового окна.

  • Чтобы выполнить весь написанный код, нажмите клавиши CTRL+F5 или выберите команду меню Отладка>Запуск без отладки. Если в коде все еще есть ошибки, в Visual Studio будут выведены предупреждения.
  • Во время выполнения программы в окне консоли будут отображаться результаты. Это напоминает запуск интерпретатора Python с файлом PythonApplication1.py из командной строки. Чтобы закрыть это окно и вернуться в редактор Visual Studio, нажмите любую клавишу. Output for the first run of the program
  • Помимо инструкций и функций, IntelliSense выводит варианты для завершения операторов Python import и from . Эти варианты позволяют легко узнать, какие модули доступны в вашей среде и какие члены доступны в определенном модуле. В редакторе удалите строку print и начните вводить import . Список модулей появляется после ввода пробела: IntellSense showing available modules for an import statement
  • Завершите строку, введя или выбрав sys .
  • В следующей строке введите from , чтобы снова вывести список модулей: IntellSense showing available modules for a from statement
  • Выберите или введите math , а затем пробел и import , чтобы отобразился список элементов модуля: IntellSense showing module members
  • Наконец импортируйте элементы cos и radians . Обратите внимание, как для каждого из них будут выводиться варианты автозавершения. По завершении код должен выглядеть следующим образом:

    import sys from math import cos, radians 

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

    for i in range(360): print(cos(radians(i))) 

    Как вставить уже готовый код в IDLE?

    Скоприровал сразу с блокнота

    Только начал учиться программировать. Python 3.6. shell. Если вставить уже готовый код (например с блокнота) в IDLE, то только первая строчка кода начнется с «>>>», а все строчки ниже будут начинаться без «>>>» и программа выдаст ошибку. Но если копировать код построчно, после каждой строки нажимая Enter, то каждая новая строчка будет начинаться с «>>>» и код будет выполняться. Копировать код строка за строкой неудобно, а как копировать код целиком и чтобы он работал? Заранее спасибо, в гугле не нашел. Где-то туплю.

    Отслеживать

    задан 23 апр 2018 в 11:09

    3 3 3 бронзовых знака

    Сохранить в файл, в idle файл — открыть.

    23 апр 2018 в 13:30

    связанный вопрос IDE для Python

    23 апр 2018 в 15:16

    1 ответ 1

    Сортировка: Сброс на вариант по умолчанию

    1. В IDLE идём в меню File и выбираем пункт New File (или просто нажимаем Ctrl+N).
    2. В новом открывшемся окне вставляем текст, скопированный из блокнота (или откуда Вы там копируете. )
    3. Сохраняем файл с удобным именем в удобном месте. Не забываем про отступы — Python к этому ооочень чувствителен.
    4. После того, как файл сохранили, можно его запускать: F5 или Run -> Run Module

    Отслеживать

    ответ дан 23 апр 2018 в 14:53

    Правила оформления Python-кода

    Рекомендуется использовать 4 пробела на каждый уровень отступа. Python 3 запрещает смешивание табуляции и пробелов в отступах. Код, в котором используются и те, и другие типы отступов, должен быть исправлен так, чтобы отступы в нем были расставлены только с помощью пробелов.

     def no_tab_using(): no_tab = 'Using 4 spaces' 
     def use_tab(): one_tab_using = 'Ugly' 

    2. Точки с запятой

    Не разделяйте ваши строки с помощью точек с запятой и не используйте точки с запятой для разделения команд, находящихся на одной строке.

     a = 'String' b = 15 c = 7.2 
     a = 'String'; b = 15; c = 7.2; 

    3. Скобки

    Используйте скобки экономно. Не используйте их с выражением return или с условной конструкцией, если не требуется организовать перенос строки. Однако скобки хорошо использовать для создания кортежей.

     if budget < 0: return False # ------------------- while counter  
     if (budget < 0): return (False) # ------------------- if not(line): continue # ------------------- return (result) 

    4. Пробелы в выражениях и инструкциях

    4.1 Пробелы и скобки

    4.1.1 Не ставьте пробелы внутри каких-либо скобок (обычных, фигурных и квадратных).

     pineapple(pine[1], ) 
     pineapple( pine[ 1 ], < apple: 2 >) 

    4.1.2 Никаких пробелов перед открывающей скобкой, которая начинает список аргументов, индекс или срез.

     get_number_of_guests(1) 
     get_number_of_guests (1) 
     dish['ingredients'] = cook_book[:3] 
     dish ['ingredients'] = cook_book [:3] 

    4.2 Пробелы рядом с запятой, точкой с запятой и точкой

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

     if number_of_goods == 4: print(number_of_goods, total_price) 
     if number_of_goods == 4 : print(number_of_goods , total_price) 

    4.3 Пробелы вокруг бинарных операторов

    4.3.1 Окружайте бинарные операторы одиночными пробелами с каждой стороны. Это касается присваивания ( = ), операторов сравнения ( == , , > , != , <> , , >= , in , not in , is , is not ), и булевых операторов ( and , or , not ). Используйте, как вам покажется правильным, окружение пробелами по отношению к арифметическим операторам, но расстановка пробелов по обеим сторонам бинарного оператора придает целостность коду.

     counter == 1 
     counter  

    4.3.2 Не используйте более одного пробела вокруг оператора присваивания (или любого другого оператора) для того, чтобы выровнять его с другим.

     price = 1000 price_with_taxes = 1200 price_with_taxes_and_discounts = 1100 
     price = 1000 price_with_taxes = 1200 price_with_taxes_and_discounts = 1100 

    4.3.3 Не используйте пробелы по сторонам знака = , когда вы используете его, чтобы указать на именованный аргумент или значение по умолчанию.

     def complex(real, imag=0.0): return magic(r=real, i=imag) 
     def complex(real, imag = 0.0): return magic(r = real, i = imag) 

    5. Длина строк

    Ограничивайте длину строк 79 символами (а длину строк документации и комментариев — 72 символами). В общем случае не используйте обратный слеш в качестве перехода на новую строку. Используйте доступное в Python явное объединение строк посредством круглых и фигурных скобок. Если необходимо, можно добавить дополнительную пару скобок вокруг выражения.

     style_object(self, width, height, color='black', design=None, emphasis=None, highlight=0) if (width == 0 and height == 0 and color == 'red' and emphasis == 'strong'): 

    Если ваш текст не помещается в одну строку, используйте скобки для явного объединения строк.

     long_string = ('This will build a very long long ' 'long long long long long long string') 

    Что касается длинных URL в комментариях, то располагайте их, если это необходимо, на одной строке.

     # See details at # http://www.example.com/example/example/example/example/example/example/example_example.html 
     # See details at # http://www.example.com/example/example/example/example/example/\ # example/example_example.html 

    Обратный слеш иногда используется. Например, с длинной конструкцией with для переноса блока инструкций.

     with open('/path/to/some/file/you/want/to/read') as file_1, \ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read()) 

    Ещё один подобный случай — длинные assert .

    6. Пустые строки

    Отделяйте функции (верхнего уровня, не функции внутри функций) и определения классов двумя пустыми строками. Определения методов внутри класса отделяйте одной пустой строкой. Две пустые строки должны быть между объявлениями верхнего уровня, будь это класс или функция. Одна пустая строка должна быть между определениями методов и между объявлением класса и его первым методом.

     import os . . class MyClass: . def __init__(self): self.name = 'My name' . def f(self): return 'hello world' . . def MyFunc(): i = 12345 return i . myclass = MyClass() 

    Используйте (без энтузиазма) пустые строки в коде функций, чтобы отделить друг от друга логические части.

    Python расценивает символ control+L как незначащий (whitespace), и вы можете использовать его, потому что многие редакторы обрабатывают его как разрыв страницы — таким образом, логические части в файле будут на разных страницах. Однако не все редакторы распознают control+L и могут на его месте отображать другой символ.

    7. Имена

    Имена, которых следует избегать:

      Односимвольные имена, исключая счетчики либо итераторы. Никогда не используйте символы l (маленькая латинская буква «эль»), O (заглавная латинская буква «о») или I (заглавная латинская буква «ай») как однобуквенные идентификаторы. В некоторых шрифтах эти символы неотличимы от цифры один и нуля. Если очень нужно l , пишите вместо неё заглавную L . Хорошо

     long_name = 'Хорошее имя переменной' L = 'Допустимо, но лучше избегать' 
     l = 1 I = 1 O = 0 
     import my_module 
     import my-module 
     my_variable = 'Variable' 
     __myvariable__ = 'Variable' 

    7.1 Имена функций

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

     my_variable = 'Variable' 
     My-Variable = 'Variable' 

    Стиль mixedCase допускается в тех местах, где уже преобладает такой стиль — для сохранения обратной совместимости.

    7.2 Имена модулей и пакетов

    Модули должны иметь короткие имена, состоящие из маленьких букв. Можно использовать символы подчёркивания, если это улучшает читабельность. То же самое относится и к именам пакетов, однако в именах пакетов не рекомендуется использовать символ подчёркивания.

    Так как имена модулей отображаются в имена файлов, а некоторые файловые системы являются нечувствительными к регистру символов и обрезают длинные имена, очень важно использовать достаточно короткие имена модулей — это не проблема в Unix, но, возможно, код окажется непереносимым в старые версии Windows, Mac, или DOS.

     import vkapi 
     import My-First-VKontakte-API-Modul 

    7.3 Имена классов

    Все имена классов должны следовать соглашению CapWords почти без исключений.

     class MyFirstClass: 

    Иногда вместо этого могут использоваться соглашения для именования функций, если интерфейс документирован и используется в основном как функции.

    Обратите внимание, что существуют отдельных соглашения о встроенных именах: большинство встроенных имен — одно слово (либо два слитно написанных слова), а соглашение CapWords используется только для именования исключений и встроенных констант.

    Так как исключения являются классами, к исключениями применяется стиль именования классов. Однако вы можете добавить Error в конце имени (если, конечно, исключение действительно является ошибкой).

    7.4 Имена констант

    Константы обычно объявляются на уровне модуля и записываются только заглавными буквами, а слова разделяются символами подчеркивания.

     MAX_OVERFLOW = 10 TOTAL = 100 

    8. Комментарии

    Комментарии, противоречащие коду, хуже, чем отсутствие комментариев. Всегда исправляйте комментарии, если меняете код!

    Комментарии должны быть законченными предложениями. Если комментарий — фраза или предложение, первое слово должно быть написано с большой буквы, если только это не имя переменной, которая начинается с маленькой буквы (никогда не отступайте от этого правила для имен переменных).

    Ставьте два пробела после точки в конце предложения.

    Если вы — программист, не говорящий по-английски, то всё равно следует использовать английский язык для написания комментариев. Особенно, если нет уверенности на 120% в том, что этот код будут читать только люди, говорящие на вашем родном языке.

    8.1 Блоки комментариев

    Блок комментариев обычно объясняет код (весь или только некоторую часть), идущий после блока, и должен иметь тот же отступ, что и сам код. Каждая строчка такого блока должна начинаться с символа # и одного пробела после него (если только сам текст комментария не имеет отступа).

    Абзацы внутри блока комментариев разделяются строкой, состоящей из одного символа # .

    8.2 Комментарии в строке с кодом

    Старайтесь реже использовать подобные комментарии.

    Такой комментарий находится в той же строке, что и инструкция. «Встрочные» комментарии должны отделяться хотя бы двумя пробелами от инструкции. Они должны начинаться с символа # и одного пробела.

    Комментарии в строке с кодом не нужны и только отвлекают от чтения, если они объясняют очевидное.

     counter = counter + 1 # Increment counter 

    8.3 Строки документации

    Соглашения о написании хорошей документации (docstrings) зафиксированы в PEP 257.

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

    Очень важно, чтобы закрывающие кавычки стояли на отдельной строке. А еще лучше, если перед ними будет ещё и пустая строка.

     """Return something useful Optional plotz says to frobnicate the bizbaz first. """ 

    Для однострочной документации можно оставить """ на той же строке.

    9. Циклы

    9.1 Циклы по спискам

    Если нам необходимо в цикле пройти по всем элементам списка, то хорошим тоном (да и более читаемым) будет такой способ:

     colors = ['red', 'green', 'blue', 'yellow'] for color in colors: print(color) 

    И хотя бывалые программисты или просто любители C могут использовать и такой код, это моветон.

     colors = ['red', 'green', 'blue', 'yellow'] for i in range(len(colors)): print(colors[i]) 

    А если нужно пройти по списку задом наперед, то лучше всего использовать метод reversed:

     colors = ['red', 'green', 'blue', 'yellow'] for color in reversed(colors): print(color) 

    Вместо того чтобы писать избыточный код, который и читается-то не очень внятно.

     colors = ['red', 'green', 'blue', 'yellow'] for i in range(len(colors)-1, -1, -1): print(colors[i]) 

    9.2 Циклы по списку чисел

    Если есть необходимость пройти в цикле по ряду чисел, то метод range будет намного приемлемее, как минимум потому, что этот метод потребляет намного меньше памяти, чем вариант в блоке "Плохо". А представьте, что у вас ряд из трёх миллиардов последовательных чисел!

     for i in range(6): print(i**2) 
     for i in [0, 1, 2, 3, 4, 5]: print(i**2) 

    9.3 Циклы по спискам с индексами

    Метод enumerate позволяет получить сразу индекс и значение из списка, что, во-первых, предоставляет множество возможностей для дальшнейшего проектирования, а во-вторых, такой код легче читается и воспринимается.

     colors = ['red', 'green', 'blue', 'yellow'] for i, color in enumerate(colors): print(i, '-->', color) 
     colors = ['red', 'green', 'blue', 'yellow'] for i in range(len(colors)): print(i, '-->', colors[i]) 

    9.4 Циклы по двум спискам

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

     names = ['raymond', 'rachel', 'matthew'] colors = ['red', 'green', 'blue', 'yellow'] for name, color in zip(names, colors): print(name, '-->', color) 
     names = ['raymond', 'rachel', 'matthew'] colors = ['red', 'green', 'blue', 'yellow'] n = min(len(names), len(colors)) for i in range(n): print(names[i], '-->', colors[i]) 

    10. Импорты

    Каждый импорт, как правило, должен быть на отдельной строке.

     import os import sys 
     import sys, os 

    В то же время, можно писать так:

     from subprocess import Popen, PIPE 

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

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

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

     import foo from foo import bar from foo.bar import baz from foo.bar import Quux from Foob import ar 

    Рекомендуется абсолютное импортирование, так как оно обычно более читаемо и ведет себя лучше (или, по крайней мере, даёт понятные сообщения об ошибках), если импортируемая система настроена неправильно (например, когда каталог внутри пакета заканчивается на sys.path ).

     import mypkg.sibling from mypkg import sibling from mypkg.sibling import example 

    Тем не менее, явный относительный импорт является приемлемой альтернативой абсолютному импорту, особенно при работе со сложными пакетами, где использование абсолютного импорта было бы излишне подробным.

     from . import sibling from .sibling import example 

    Следует избегать шаблонов импортов ( from import * ), так как они делают неясным то, какие имена присутствуют в глобальном пространстве имён, что вводит в заблуждение как читателей, так и многие автоматизированные средства.

    Рекомендуем также ознакомиться с полной версией соглашения о том, как писать код на Python (PEP 8)

    Редактирование кода Python

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

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

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

    Кроме того, с помощью обозревателя объектов Visual Studio (Вид>Другие окна>Обозреватель объектов или клавиши CTRL+W>J) вы можете проверять классы Python, определенные в каждом модуле, и функции, определенные в этих классах.

    IntelliSense

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

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

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

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

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

    Member completion in the Visual Studio editor

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

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

    Member completion with filtering in the Visual Studio editor

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

    Member completion on multiple types in the Visual Studio editor

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

    Private member completion in the Visual Studio editor

    Операторы import и from . import отображают список модулей, которые можно импортировать. При использовании from . import список содержит элементы, которые можно импортировать из указанного модуля.

    Import completion in the Visual Studio editor

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

    Exception completion in the Visual Studio editor

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

    Decorator completion in the Visual Studio editor

    Вы можете настроить поведение автозавершений, выбрав Инструменты>Параметры>Текстовый редактор>Python>Дополнительно. Параметр Фильтрация списка по поисковой строке позволяет применить фильтрацию предложений автозавершения при вводе (флажок установлен по умолчанию), а при выборе параметра Завершение членов отображает пересечение членов отображаются только те автозавершения, которые поддерживают все возможные типы (флажок снят по умолчанию). См. раздел Параметры. Результаты завершения.

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

    Visual Studio 2017 версии 15.7 и более поздней.

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

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

    Hovering over a function call to reveal type hints

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

    IntelliSense completion showing type hints

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

    Run MyPy context menu command in Solution Explorer

    При запуске команды отображается запрос на установку пакета 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 в этом коде вызывает следующую ошибку:

    Example result of mypy validating type hints

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

    Visual Studio содержит набор пакетов файлов Typeshed для Python 2 и 3, поэтому нет необходимости скачивать их отдельно. Но если вы хотите использовать другой набор файлов, можно указать путь в меню Средства>Параметры>Python>Языковой сервер. См. статью Параметры для Python в Visual Studio.

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

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

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

    Signature help in the Visual Studio editor

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

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

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

    Quick Info in the Visual Studio editor

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

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

    Code and syntax coloring in the Visual Studio editor

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

    Fonts and Colors options in Visual Studio

    Чтобы отключить цветовую маркировку синтаксиса, выберите Инструменты>Параметры>Текстовый редактор>Python>Дополнительно и снимите флажок Разные параметры>Имена цветов по типам. См. раздел Параметры. Прочие параметры.

    Фрагменты кода

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

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

    Code snippet for the class shortcut

    Если нажать клавишу TAB, будет создана остальная часть класса. Можно ввести имя и список базовых классов, перемещаясь между выделенными полями с помощью клавиши TAB, а затем нажав клавишу ВВОД, чтобы начать ввод текста.

    Highlights on areas of a code snippet for you to complete

    Команды меню

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

    Selecting a code snippet through the Insert Code Snippet command

    Команда Правка>IntelliSense>Разместить во фрагменте точно так же помещает текущий выделенный фрагмент в текстовый редактор внутри выбранного структурного элемента. Предположим, у вас есть небольшой фрагмент кода:

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

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

    Using the Surround With command for code snippets

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

    Доступные фрагменты кода можно просмотреть в диспетчере фрагментов кода. Чтобы открыть его, выберите пункт меню Инструменты>Диспетчер фрагментов кода и выберите Python в качестве языка:

    Code Snippets Manager in Visual Studio

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

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

    Навигация по коду

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

    Панель навигации

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

    Navigation Bar in the Visual Studio editor

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

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

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

    Go To Definition command in Visual Studio

    Функция "Перейти к"

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

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

    Navigate To command in Visual Studio

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

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

    Find All References results

    Связанный контент

    • Форматирование
    • Рефакторинг
    • Использование анализатора кода
  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *