IDLE


IDLE — это интегрированная среда разработки и обучения Python.

У IDLE следующие особенности:

  • реализован на 100% чистом Python с использованием набора инструментов графического интерфейса пользователя tkinter
  • кросс-платформенный: работает практически одинаково в Windows, Unix и macOS
  • окно оболочки Python (интерактивный интерпретатор) с раскрашиванием ввода, вывода кода и сообщений об ошибках
  • многооконный текстовый редактор с несколькими отменами, раскрашиванием Python, интеллектуальным отступом, подсказками при вызове, автозавершением и другими функциями
  • поиск в любом окне, замена в окнах редактора и поиск в нескольких файлах (grep)
  • отладчик с постоянными точками останова, пошаговым выполнением и просмотром глобальных и локальных пространств имён
  • настройки, браузеры и другие диалоги

Меню

У IDLE два основных типа окон: окно оболочки и окно редактора. Одновременно можно создать несколько окон редактора. В Windows и Linux у каждого есть собственное верхнее меню. Каждое меню, задокументированное ниже, указывает, с каким типом окна оно связано.

Окна вывода, такие как Edit => Find в файлах, являются подтипом окна редактора. В настоящее время они имеют одно и то же верхнее меню, но другой заголовок по умолчанию и контекстное меню.

В macOS есть одно меню приложений. Он динамически изменяется в соответствии с выбранным в данный момент окном. В нем есть меню IDLE, а некоторые описанные ниже элементы, перемещены в соответствии с рекомендациями Apple.

Меню «File» (оболочка и редактор)

New File
Создаёт новое окно редактирования файла.
Open…
Открывает существующий файл с помощью диалогового окна «Open».
Recent Files
Открывает список последних файлов. Нажмите один раз, чтобы открыть его.
Open Module…
Открывает существующий модуль (ищет sys.path).
Class Browser
Показывает функции, классы и методы в текущем файле редактора в формате древовидной структуры. В оболочке сначала открыть модуль.
Path Browser
Показывает каталоги, модули, функции, классы и методы sys.path в виде древовидной структуры.
Save
Сохраняет текущее окно в связанный файл, если он есть. Измененные окна с момента открытия или последнего сохранения, содержат * перед и после заголовка окна. Если нет связанного файла, вместо него выполняет «Save As».
Save As…
Сохраняет текущее окно с помощью диалогового окна «Save As». Сохраненный файл становится новым связанным файлом для окна.
Save Copy As…
Сохраняет текущее окно в другой файл без изменения связанного файла.
Print Window
Распечатывает текущее окно на принтере по умолчанию.
Close
Закрывает текущее окно (предложит сохранить, если оно не сохранено).
Exit
Закрывает все окна и выходит из IDLE (предложит сохранить несохраненные окна).

Меню «Edit» (Оболочка и Редактор)

Undo
Отменяет последнее изменение в текущем окне. Максимально может быть отменено 1000 изменений.
Redo
Повторяет последнее отмененное изменение в текущем окне.
Cut
Копирует выделение в общесистемный буфер обмена; затем удаляет выделение.
Copy
Копирует выделение в общесистемный буфер обмена.
Paste
Вставляет содержимое общесистемного буфера обмена в текущее окно.

Функции буфера обмена также доступны в контекстных меню.

Select All
Выделяет все содержимое текущего окна.
Find…
Открывает диалоговое окно поиска с множеством параметров
Find Again
Повторяет последний поиск, если он есть.
Find Selection
Поиск текущей выбранной строки, если она есть.
Find in Files…
Открывает диалоговое окно поиска файлов. Помещает результаты в новое окно вывода.
Replace…
Открывает диалоговое окно поиска и замены.
Go to Line
Перемещает курсор в начало запрошенной строки и выполняет отображение строки. Запрос после конца файла перемещается в конец. Снимает выделение и обновляет статус строки и столбца.
Show Completions
Открывает прокручиваемый список, позволяющий выбрать существующие имена. См. Завершения в разделе «Редактирование и навигация» ниже.
Expand Word
Расширяет введенный вами префикс, чтобы он соответствовал полному слову в том же окне; повторяет, чтобы получить другое расширение.
Show call tip
После незакрытой скобки для функции открывает маленькое окно с подсказками параметров функции. См. Подсказки по вызову в разделе редактирования и навигации ниже.
Show surrounding parens
Подсвечивает окружающие скобки.

Меню «Format» (только окно редактора)

Indent Region
Сдвигает выделенные строки вправо на ширину отступа (по умолчанию 4 пробела).
Dedent Region
Сдвигает выделенные строки влево на ширину отступа (по умолчанию 4 пробела).
Comment Out Region
Вставляет ## перед выделенными строками.
Uncomment Region
Удалить ведущие # или ## из выбранных строк.
Tabify Region
Превращает ведущие пробелы в табы. (Примечание: мы рекомендуем использовать 4 пробела для отступа кода Python.)
Untabify Region
Превращает все табы в правильное количество пробелов.
Toggle Tabs
Открывает диалоговое окно для переключения между отступами с пробелами и табуляциями.
New Indent Width
Открывает диалоговое окно для изменения ширины отступа. По умолчанию в Python сообществе принято 4 пробела.
Format Paragraph
Переформатирует текущий абзац, разделенный пустой строкой, в блоке комментариев или многострочной строки или выделенной строки в строке. Все строки в абзаце будут отформатированы так, чтобы было меньше N столбцов, где N по умолчанию равно 72.
Strip trailing whitespace
Удаляет завершающий пробел и другие пробельные символы после последнего непробельного символа строки, применяя str.rstrip к каждой строке включая строки в многострочных строках. За исключением окон оболочки удаляет лишние символы новой строки в конце файла.

Меню «Run» (только окно редактора)

Run Module
Выполняет Проверку модуля. Если ошибки нет, перезапускает оболочку, чтобы очистить среду, затем запускает модуль. Вывод отображается в Shell окне. Обратите внимание, что для вывода требуется использование print или write. Когда выполнение завершено, оболочка сохраняет фокус и отображает подсказку. На этом этапе можно в интерактивном режиме исследовать результат выполнения. Это похоже на выполнение файла с python -i file из командной строки.
Run… Customized
То же, что и Запуск модуля, но запускает модуль с измененными настройками. Аргументы командной строки расширяют sys.argv, как если бы он был передан в командной строке. Модуль можно запустить в Shell без перезагрузки.
Check Module
Переформатирует синтаксис модуля, открытого в данный момент в окне Editor. Если модуль не был сохранен IDLE либо предложит пользователю сохранить, либо автосохранение, выбранное на вкладке «General» диалогового окна «Settings». Если есть синтаксическая ошибка, примерное местонахождение указано в Editor окне.
Python Shell
Открывает или активирует Python окно Shell.

Меню «Shell» (только окно оболочки)

View Last Restart
Прокручивает окно оболочки до последнего перезапуска Shell.
Restart Shell
Перезапускает оболочку, чтобы очистить среду и сбросить отображение и обработку исключений.
Previous History
Циклический просмотр более ранних команд в истории, которые соответствуют текущей записи.
Next History
Циклический просмотр более поздних команд в истории, которые соответствуют текущей записи.
Interrupt Execution
Останавливает работающую программу.

Меню «Debug» (только окно оболочки)

Go to File/Line
Перейти на текущую строку с курсором и строку выше для имени файла и номера строки. Если он найден, открывает файл, если он ещё не открыт, далее отображает строку. Используйте для просмотра исходных строк, на которые есть ссылки в трассировке исключений и строки, найденные функцией «Find in Files». Также доступно в контекстном меню окна Shell и окна Output.
Debugger (toggle)
При активации будет выполняться код, введенный в оболочке или запущенный из редактора под отладчиком. В редакторе точки останова могут быть установлены с учётом контекста меню. Данная функция все ещё не завершена и несколько экспериментальна.
Stack Viewer
Показывает трассировку стека последнего исключения в виджете дерева, с доступом к локальным и глобальным.
Stack Viewer
Включает автоматическое открытие средства просмотра стека при необработанном исключении.

Меню «Options» (оболочка и редактор)

Configure IDLE
Открывает диалоговое окно конфигурации и изменяет настройки для следующего: шрифты, отступы, сочетания клавиш, цветовые темы текста, окна запуска и размер, дополнительные источники справки и расширения. В macOS открывает файл диалоговое окно Preferences, выбрав Preferences в приложении меню. Подробнее см. Настройку предпочтений в разделе «Справка и настройки».

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

Show/Hide Code Context (Editor Window only)
Открывает панель в верхней части окна редактирования, которая показывает контекст блока кода, который прокручивается над верхней частью окна. См. Контекст кода в разделе «Редактирование и навигация» ниже.
Show/Hide Line Numbers (Editor Window only)
Открывает столбец слева от окна редактирования, в котором отображается число каждой строки текста. По умолчанию выключено, это можно изменить в файле предпочтения (см. Настройка предпочтений).
Zoom/Restore Height
Переключает окно между нормальным размером и максимальной высотой. Начальный размер по умолчанию 40 строк по 80 символов, если не изменено на вкладке «General» Configure диалогового окна IDLE. Максимальная высота экрана определяется мгновенное развертывание окна при первом увеличении экрана. Изменение настроек экрана может сделать сохраненную высоту недействительной. Данный переключатель имеет никакого эффекта, когда окно развернуто.

Меню «Window» (оболочка и редактор)

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

Меню «Help» (Shell и Editor)

About IDLE
Показывает версию, авторские права, лицензию, благодарности и многое другое.
IDLE Help
Показывает данный документ IDLE с подробным описанием опций меню, базового редактирования, навигации и другие советы.
Python Docs
Предоставляет доступ к локальной документации Python, если она установлена, или запускает браузер открыв сайт с актуальной документацией по Python.
Turtle Demo
Запускает демонстрационный модуль черепахи с примером кода Python и рисунками черепахи.

Здесь можно добавить дополнительные источники справки с помощью диалогового окна «Configure IDLE» на вкладке «General». Дополнительные сведения о пунктах меню «Help» см. в подразделе Справка ниже.

Контекстные меню

Открывает контекстное меню, щелкнув правой кнопкой мыши в окне (удерживая нажатой клавишу Control в macOS). У контекстного меню есть стандартные функции буфера обмена и в меню «Edit».

Cut
Копирует выделение в общесистемный буфер обмена; затем удаляет выделение.
Copy
Копирует выделение в общесистемный буфер обмена.
Paste
Вставляет содержимое общесистемного буфера обмена в текущем окне.

У окон редактора также есть функции точек останова. Строки с установленной точкой останова помечаются специальным образом. Точки останова действуют только при работе под отладчиком. Точки останова для файла сохраняются в пользовательском каталоге .idlerc.

Set Breakpoint
Устанавливает точку останова на текущей строке.
Clear Breakpoint
Очищает точку останова на данной строке.

Окна Shell и Output также содержат следующее:

Go to file/line
То же, что и в меню отладки.

Окно Shell также содержит средство сжатия вывода, рассмотренное в подразделе Окно оболочки Python далее.

Squeeze
Если курсор находится над строкой вывода, вставляет весь вывод между кодом выше и подсказкой ниже до метки «Squeezed text».

Редактирование и навигация

Окна редактора

IDLE может открывать окна редактора при запуске, в зависимости от настроек и способа запуска IDLE. После этого используйте меню «File». Для данного файла может быть только одно открытое окно редактора.

Строка заголовка содержит имя файла, полный путь и версию Python и IDLE, в которых запущено окно. Строка состояния содержит номер строки («Ln») и номер столбца («Col»). Номера строк начинаются с 1; номера столбцов с 0.

IDLE предполагает, что файлы с известным расширением .py* содержат код Python, а другие файлы — нет. Выполняет код Python с помощью меню «Run».

Привязки клавиш

В этом разделе «C» относится к клавише Control в Windows и Unix и клавише Command в macOS.

  • Backspace удаляет слева; Del удаляет вправо

  • C-Backspace удаляет слово слева; C-Del удаляет слово справа

  • Клавиши со стрелками и Page Up/Page Down для перемещения

  • C-LeftArrow и C-RightArrow перемещаются по словам

  • Home/End переходит к началу/концу строки

  • C-Home/C-End переходит к началу/концу файла

  • Некоторые полезные привязки Emacs унаследованы от Tcl/Tk:

    • C-a начало строки
    • C-e конец строки
    • Строка уничтожения C-k (но не помещается в буфер обмена)
    • C-l центральное окно вокруг точки вставки
    • C-b переходит на один символ назад без удаления (обычно для этого также можно использовать клавишу курсора)
    • C-f переходит на один символ вперед без удаления (обычно для этого также можно использовать клавишу курсора)
    • C-p переходит на одну строку вверх (обычно для этого также можно использовать клавишу курсора)
    • C-d удаляет следующий символ

Стандартные сочетания клавиш (например, C-c для копирования и C-v для вставки) могут работать. Привязки клавиш выбираются в диалоговом окне «Configure IDLE».

Автоматический отступ

После оператора открытия блока следующая строка имеет отступ в 4 пробела (в окне Python Shell на однин таб). После определённых ключевых слов (break, return и т. д.) следующая строка содержит отступ. В начальном отступе Backspace удаляет до 4 пробелов, если они есть. Tab вставляет пробелы (в окне Python Shell один таб), количество зависит от ширины отступа. В настоящее время табы ограничены четырьмя пробелами из-за ограничений Tcl/Tk.

См. также команды indent/dedent области на странице Меню форматирования.

Завершения

Завершения предоставляются, когда они запрошены и доступны для имён модулей, атрибутов классов, функций или имён файлов. Каждый запрашиваемый метод отображает поле завершения с существующими именами. (Исключение см. ниже для заполнения табов.) Для любого поля изменяет заполняемое имя и элемент, выделенный в поле, введя и удалив символы; нажав клавиши Up, Down, PageUp, PageDown, Home и End; и одним щелчком внутри поля. Закрывает окно клавишами Escape, Enter и двойными клавишами Tab или щелчками за пределами поля. Двойной щелчок внутри поля выбирает и закрывает.

Один из способов открыть поле — ввести ключевой символ и подождать заранее заданный интервал. По умолчанию — 2 секунды; настройте его в диалоге настроек. (Чтобы предотвратить автоматические всплывающие окна, устанавливает задержку на большое количество миллисекунд, например 100000000.) Для импортированных имён модулей или атрибутов класса или функции введите «.». Для имён файлов в корневом каталоге введите os.sep или os.altsep сразу после открывающей кавычки. (В Windows можно сначала указать диск.) Переходит в подкаталоги, введя имя каталога и разделитель.

Вместо того, чтобы ждать или после закрытия окна, немедленно открывает окно завершения с помощью команды «Show Completions» в меню «Edit». Горячая клавиша по умолчанию — C-space. Если перед открытием коробки ввести префикс для нужного имени, первое совпадение или близкое совпадение становится видимым. Результат такой же, как если бы кто-то ввел префикс после отображения окна. Показывает завершения после того, как кавычка завершает имена файлов в текущем каталоге, а не в корневом каталоге.

Нажатие Tab после префикса обычно имеет тот же эффект, что и «Show Completions». (Без префикса он — отступ.) Однако, если есть только одно совпадение с префиксом, это совпадение немедленно добавляется в текст редактора, не открывая поле.

Вызов «Show Completions» или нажатие Tab после префикса вне строки и без предшествующего «.». открывает поле с ключевыми словами, встроенными именами и доступными именами на уровне модуля.

При редактировании кода в редакторе (в отличие от Shell) увеличивает доступные имена на уровне модулей, запустив свой код и не перезапуская Shell после него. Это особенно полезно после добавления импорта в начало файла. Это также увеличивает количество возможных завершений атрибутов.

Поля завершения изначально исключают имена, начинающиеся с «_» или, для модулей, не включенные в «__all__». Доступ к скрытым именам можно получить, набрав «_» после «.» либо до, либо после открытия поля.

Подсказки

Подсказка отображается автоматически при вводе ( после имени доступной функции. Выражение имени функции может включать точки и нижние индексы. Подсказка остаётся до тех пор, пока по ней не будет нажат щелчок, курсор не будет перемещен за пределы области аргумента или не будет введено ). Всякий раз, когда курсор находится в части аргумента определения, выберите «Edit» и «Show Call Tip» в меню или введите его ярлык, чтобы отобразить подсказку.

Подсказка состоит из сигнатуры функции и строки документации до первой пустой строки последней или до пятой непустой строки. (Некоторые встроенные функции не имеют доступной сигнатуры.) «/» или «*» в сигнатуре указывает, что предшествующие или последующие аргументы передаются только по положению или имени (ключевому слову). Детали могут быть изменены.

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

Например, перезапустите Shell и введите itertools.count(. Подсказка появляется, потому что Idle импортирует itertools в пользовательский процесс для собственного использования. (Это может измениться.) Введите turtle.write(, и ничего не появится. Простой сам по себе не импортирует turtle. Вход в меню и ярлык тоже ничего не делают. Введите import turtle. После этого turtle.write( отобразит всплывающую подсказку.

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

Контекст кода

В окне содержащем код Python редактора, можно переключать контекст кода, чтобы отобразить или скрыть панель в верхней части окна. При отображении эта панель замораживает начальные строки для блочного кода, например те, которые начинаются с ключевых слов class, def или if, которые в противном случае прокручивались бы вне поля зрения. Размер панели будет увеличиваться и уменьшаться по мере необходимости, чтобы отображать все текущие уровни контекста, вплоть до максимального количества строк, определённого в диалоговом окне «Configure IDLE» (которое по умолчанию равно 15). Если текущих строк контекста нет, а функция включена, будет отображаться одна пустая строка. Щелчок по строке в контекстной панели переместит эту строку в верхнюю часть редактора.

Цвета текста и фона контекстной панели можно настроить на вкладке «Highlights» в диалоговом окне «Configure IDLE».

Окно Shell Python

С оболочкой IDLE можно вводить, редактировать и вызывать завершенные операторы. Большинство консолей и терминалов одновременно работают только с одной физической строкой.

Когда кто-то вставляет код в Shell, он не компилируется и, возможно, не выполняется до тех пор, пока не будет найден Return. Сначала можно отредактировать вставленный код. Если вставить в Shell более одного оператора, результатом будет SyntaxError, когда несколько операторов скомпилированы, как если бы они были одним.

Функции редактирования, описанные в предыдущих подразделах, работают при интерактивном вводе кода. Окно оболочки IDLE также реагирует на следующие клавиши.

  • C-c прерывает выполнение команды

  • C-d отправляет конец файла; закрывает окно, если введено в приглашении >>>

  • Alt-/ (Расширенное слово) также удобен для сокращения набора текста

    История команд

    • Alt-p извлекает предыдущую команду, соответствующую тому, что вы набрали. В macOS используйте C-p.
    • Alt-n получает следующее. В macOS используйте C-n.
    • Return во время любой предыдущей команды извлекает эту команду.

Цвета текста

В Idle по умолчанию текст отображается черным цветом на белом фоне, но при этом текст окрашивается в специальные цвета. Для оболочки это вывод оболочки, ошибка оболочки, вывод пользователя и ошибка пользователя. Для кода Python в командной строке или в редакторе это ключевые слова, имена встроенных классов и функций, имена после class и def, строки и комментарии. Для любого текстового окна это курсор (если присутствует), найденный текст (если возможно) и выделенный текст.

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

Запуск и выполнение кода

При запуске с параметром -s IDLE выполнит файл, на который ссылаются переменные среды IDLESTARTUP или PYTHONSTARTUP. IDLE сначала проверяет IDLESTARTUP; если присутствует IDLESTARTUP, запускается указанный файл. Если IDLESTARTUP отсутствует, IDLE проверяет наличие PYTHONSTARTUP. Файлы, на которые ссылаются данные переменные среды, являются удобными местами для хранения функций, которые часто используются из оболочки IDLE, или для выполнения операторов импорта для импорта общих модулей.

Кроме того, Tk также загружает файл запуска, если он присутствует. Обратите внимание, что файл Tk загружается безоговорочно. Данный дополнительный файл имеет номер .Idle.py и ищется в домашнем каталоге пользователя. Операторы в этом файле будут выполняться в пространстве имён Tk, поэтому данный файл не подходит для импорта функций, которые будут использоваться из оболочки Python IDLE.

Использование командной строки

idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...

-c command  запустить команду в окне оболочки
-d          включить отладчик и открыть окно оболочки
-e          открыть окно редактора
-h          распечатать справочное сообщение с допустимыми комбинациями и выйти
-i          открыть окно оболочки
-r file     запустить файл в окне оболочки
-s          сначала запустится $IDLESTARTUP или $PYTHONSTARTUP в окне оболочки
-t title    установить заголовок окна оболочки
-           запустить stdin в оболочке (- должен быть последним параметром перед аргументами)

Если есть аргументы:

  • Если используется -, -c или r, все аргументы помещаются в sys.argv[1:...], а sys.argv[0] устанавливается в '', '-c' или '-r'. Окно редактора не открывается, даже если это установлено по умолчанию в диалоговом окне «Options».
  • В противном случае аргументы — это файлы, открытые для редактирования, а sys.argv отражает аргументы, переданные самой IDLE.

Ошибка запуска

IDLE использует сокет для связи между процессом пользовательского интерфейса IDLE и процессом выполнения пользовательского кода. Соединение должно устанавливаться при каждом запуске или перезапуске Shell. (Последнее обозначено разделительной линией с надписью «RESTART»). Если пользовательскому процессу не удается подключиться к процессу пользовательского интерфейса, он отображает окно ошибки Tk с сообщением «невозможно подключиться (cannot connect)», которое направляет пользователя сюда. Затем он выходит.

Распространенной причиной сбоя является написанный пользователем файл с тем же именем, что и у модуля стандартной библиотеки, например random.py и tkinter.py. Когда такой файл находится в том же каталоге, что и файл, который должен быть запущен, IDLE не может импортировать файл stdlib. Текущее исправление заключается в переименовании файла пользователя.

Хотя реже, чем в прошлом, антивирусная программа или брандмауэр могут прервать соединение. Если программу нельзя научить разрешать соединение, то для работы IDLE её необходимо отключить. Безопасно разрешать это внутреннее соединение, потому что никакие данные не видны на внешних портах. Аналогичной проблемой является неправильная конфигурация сети, которая блокирует соединения.

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

Зомби процесс pythonw.exe может быть проблемой. В Windows используйте диспетчер задач, чтобы проверить его и остановить, если он есть. Иногда перезагрузка, инициированная сбоем программы или прерыванием клавиатуры (control-C), может не подключиться. Закрытие окна ошибки или использование «Restart Shell» в меню «Shell» может решить временную проблему.

При первом запуске IDLE пытается читает файлы конфигурации пользователя в ~/.idlerc/ (~ — домашний каталог). В случае возникновения проблемы должно появиться сообщение об ошибке. Не говоря уже о случайных сбоях диска, этого можно избежать, никогда не редактируя файлы вручную. Вместо этого используйте диалоговое окно конфигурации в разделе «Options». Если в файле конфигурации пользователя есть ошибка, лучшим решением может быть его удаление и запуск диалога настроек заново.

Если IDLE завершается без сообщения и не был запущен из консоли, попробовать запустить его из консоли или терминала (python -m idlelib) и посмотрите, не приведёт ли это к появлению сообщения об ошибке.

Запуск пользовательского кода

За редкими исключениями, результат выполнения кода Python с помощью IDLE должен быть таким же, как и при выполнении того же кода методом по умолчанию, непосредственно с помощью Python в текстовой системной консоли или окне терминала. Однако другой интерфейс и работа иногда влияют на видимые результаты. Например, sys.modules начинается с большего количества записей, а threading.activeCount() возвращает 2 вместо 1.

По умолчанию IDLE запускает пользовательский код в отдельном процессе ОС, а не в процессе пользовательского интерфейса, который запускает оболочку и редактор. В процессе выполнения он заменяет sys.stdin, sys.stdout и sys.stderr объектами, которые получают ввод и отправляют вывод в окно Shell. Исходные значения, хранящиеся в sys.__stdin__, sys.__stdout__ и sys.__stderr__, не изменяются, но могут быть None.

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

Стандартные замены потоков IDLE не наследуются подпроцессами, созданными в процессе выполнения, будь то непосредственно пользовательский код или модули, такие как multiprocessing. Если такой подпроцесс использует input из sys.stdin или print или write в sys.stdout или sys.stderr, IDLE следует запустить в окне командной строки. Затем вторичный подпроцесс будет присоединен к этому окну для ввода и вывода.

Код IDLE, работающий в процессе выполнения, добавляет фреймы в стек вызовов, которых в противном случае там не было бы. IDLE переносит sys.getrecursionlimit и sys.setrecursionlimit, чтобы уменьшить влияние дополнительных фреймов стека.

Если sys сбрасывается кодом пользователя, например, importlib.reload(sys), изменения IDLE теряются, а ввод с клавиатуры и вывод на экран не будут работать правильно.

Когда пользовательский код вызывает SystemExit либо напрямую, либо путём вызова sys.exit, IDLE вместо выхода возвращается к приглашению оболочки.

Пользовательский вывод в Shell

Когда программа выводит текст, результат определяется соответствующим устройством вывода. Когда IDLE выполняет пользовательский код, sys.stdout и sys.stderr подключаются к области отображения оболочки IDLE. Некоторые из его функций унаследованы от базового виджета Tk Text. Другие являются запрограммированными дополнениями. Там, где это важно, Shell предназначена для разработки, а не для производственного запуска.

Например, Shell никогда не выбрасывает выходные данные. Программа, которая отправляет неограниченный вывод в Shell, в конечном итоге заполнит память, что приведёт к ошибке памяти. Напротив, некоторые системные текстовые окна сохраняют только последние n строк вывода. Консоль Windows, например, сохраняет настраиваемое пользователем от 1 до 9999 строк, по умолчанию 300.

Виджет Tk Text и, следовательно, оболочка IDLE отображает символы (кодовые точки) в подмножестве Юникод BMP (Basic Multilingual Plane). Какие символы отображаются с правильным глифом, а какие с замещающим полем, зависит от операционной системы и установленных шрифтов. Символы табуляции заставляют следующий текст начинаться после следующей позиции табуляции. (Они встречаются каждые 8 «символов»). Символы новой строки заставляют следующий текст появляться на новой строке. Другие управляющие символы игнорируются или отображаются как пробел, прямоугольник или что-то ещё, в зависимости от операционной системы и шрифта. (Перемещение текстового курсора по такому выводу с помощью клавиш со стрелками может привести к неожиданному поведению пробелов.)

>>> s = 'a\tb\a<\x02><\r>\bc\nd'  # Ввод 22 символа.
>>> len(s)
14
>>> s  # Показывает repr(s)
'a\tb\x07<\x02><\r>\x08c\nd'
>>> print(s, end='')  # Показывает как есть
# Результат зависит от операционной системы и шрифта.  Проверьте это.

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

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

Для трассировки SyntaxError обычная отметка «^» в месте обнаружения ошибки заменяется выделением текста цветом ошибки. Когда запускаемый из файла код, вызывает другие исключения, можно щелкнуть правой кнопкой мыши строку трассировки, чтобы перейти к соответствующей строке в IDLE редакторе. Файл будет открыт при необходимости.

В Shell есть специальное средство для сжатия строк вывода до метки «Squeezed text». Это делается автоматически для вывода на N строк (N = 50 по умолчанию). N можно изменить в разделе PyShell на странице «General» диалогового окна «Settings». Вывод с меньшим количеством строк можно сжать, щелкнув правой кнопкой мыши на выводе. Это могут быть полезные строки, достаточно длинные, чтобы замедлить прокрутку.

Сжатый вывод расширяется на месте двойным щелчком метки. Его также можно отправить в буфер обмена или отдельное окно просмотра, щелкнув метку правой кнопкой мыши.

Разработка tkinter приложений

IDLE намеренно отличается от стандартного Python, чтобы облегчить разработку программ tkinter. Введите import tkinter as tk; root = tk.Tk() в стандартном Python, и ничего не появится. Введите то же самое в IDLE, и появится окно tk. В стандартном Python нужно также ввести root.update(), чтобы увидеть окно. IDLE делает то же самое в фоновом режиме примерно 20 раз в секунду, т. е. примерно каждые 50 миллисекунд. Затем наберите b = tk.Button(root, text='button'); b.pack(). Опять же, в стандартном Python ничего не меняется, пока не будет root.update().

Большинство программ tkinter запускают root.mainloop(), который обычно не возвращается, пока приложение tk не будет уничтожено. Если программа запускается с python -i или из редактора IDLE, приглашение оболочки >>> не появляется до тех пор, пока не вернется mainloop(), после чего взаимодействовать не с чем.

При запуске tkinter программы из редактора IDLE можно закомментировать вызов mainloop. Затем вы сразу же получаете приглашение оболочки и можете взаимодействовать с живым приложением. Просто нужно не забыть снова включить вызов mainloop при работе в стандартном Python.

Запуск без подпроцесса

По умолчанию IDLE выполняет пользовательский код в отдельном подпроцессе через сокет, который использует внутренний петлевой (loopback) интерфейс. Это соединение не видно извне, и данные не отправляются и не принимаются из Интернета. Если программное обеспечение брандмауэра все равно жалуется, вы можете игнорировать его.

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

Если IDLE запущен с параметром командной строки -n, он будет работать в одном процессе и не будет создавать подпроцесс, который запускает сервер выполнения RPC Python. Это может быть полезно, если Python не может создает подпроцесс или интерфейс сокета RPC на вашей платформе. Однако в этом режиме пользовательский код не изолирован от самого IDLE. Кроме того, среда не перезапускается, когда выбрано «Run/Run Module» (F5). Если ваш код был изменён, вы должны reload() затронутые модули и повторно импортировать любые определённые элементы (например, из foo import baz), чтобы изменения вступили в силу. По этим причинам предпочтительнее запускать IDLE с подпроцессом по умолчанию, если это вообще возможно.

Не рекомендуется, начиная с версии 3.4.

Помощь и предпочтения

Источники помощи

Пункт меню «Help» «IDLE Help» отображает отформатированную html-версию главы IDLE Справочника по библиотеке. Результат в текстовом окне tkinter, доступном только для чтения, близок к тому, что можно увидеть в браузере. Перемещайтесь по тексту с помощью колесика мыши, полосы прокрутки или клавиш со стрелками вверх и вниз, удерживая их нажатыми. Или нажмите кнопку TOC (Оглавление) и выбрать заголовок раздела в открывшемся окне.

Пункт меню справки «Python Docs» открывает обширные источники справки, включая учебные пособия, доступные по адресу docs.python.org/x.y, где «x.y» — это текущая версия Python. Если в вашей системе есть автономная копия документов (это может быть вариант установки), вместо этого будет открыта она.

Выбранные URL-адреса могут быть добавлены или удалены из меню справки в любое время с помощью табы «General» диалогового окна «Configure IDLE».

Установка предпочтений

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

На вкладке «Font» см. пример текста, в котором показано влияние начертания и размера шрифта на несколько символов на разных языках. Отредактируйте образец, чтобы добавить других символов, представляющих личный интерес. Используйте образец для выбора моноширинных шрифтов. Если у определённых символов есть проблемы в Shell или редакторе, добавьте их в начало образца и попробуйте изменить сначала размер, а затем шрифт.

На вкладке «Highlights and Keys» выбрите встроенную или пользовательскую цветовую тему и множество клавиш. Чтобы использовать более новую встроенную цветовую тему или набор клавиш со старыми IDLE, сохранить их как новую пользовательскую тему или набор клавиш, и они будут доступны для более старых IDLE.

IDLE на macOS

В разделе «System Preferences: Dock» можно установить «Prefer tabs when opening documents» на «Always». Данный параметр несовместим с инфраструктурой графического интерфейса пользователя tk/tkinter, используемой IDLE, и нарушает некоторые функции IDLE.

Расширения

IDLE содержит средство расширения. Настройки для расширений можно изменить на вкладке «Extensions» диалогового окна настроек. Дополнительную информацию смотрите в начале файла config-extensions.def в каталоге idlelib. Единственным текущим расширением по умолчанию является zzdummy, пример также используется для тестирования.