Документация Python неофициальный перевод

idle.md

522 строк · 55.1 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.6/library/idle.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 25.5. IDLE89**Исходный код:** [Lib/idlelib/](https://python-all.ru/src/3.6/Lib/idlelib)1011---1213IDLE – это интегрированная среда разработки и обучения Python.1415IDLE имеет следующие возможности:1617- написан на 100% чистом Python с использованием GUI-тулкита [`tkinter`](https://python-all.ru/3.6/library/tkinter.html#module-tkinter)18- кроссплатформенность: в основном одинаково работает на Windows, Unix и macOS19- окно оболочки Python (интерактивный интерпретатор) с цветовой подсветкой вводимого кода, вывода и сообщений об ошибках20- многооконный текстовый редактор с множественной отменой, подсветкой синтаксиса Python, умными отступами, подсказками вызова, автозавершением и другими функциями21- поиск в любом окне, замена в окнах редактора и поиск по нескольким файлам (grep)22- отладчик с постоянными точками останова, пошаговым выполнением и просмотром глобального и локального пространства имён23- настройки, обозреватели и другие диалоговые окна2425## 25.5.1. Меню2627IDLE имеет два основных типа окон: окно оболочки (Shell) и окно редактора (Editor). Одновременно может быть открыто несколько окон редактора. В Windows и Linux каждое окно имеет собственное верхнее меню. В описании каждого меню ниже указано, к какому типу окна оно относится.2829Окна вывода, например используемые для Edit ⇒ Find in Files, являются подтипом окна редактора. В настоящее время они имеют то же верхнее меню, но другой заголовок по умолчанию и контекстное меню.3031В macOS есть одно меню приложения. Оно динамически меняется в зависимости от текущего выбранного окна. В нём есть меню IDLE, а некоторые пункты, описанные ниже, перенесены, чтобы соответствовать рекомендациям Apple.3233### 25.5.1.1. Меню Файл (Shell и Editor)3435**Новый файл**3637Создаёт новое окно для редактирования файла.3839**Открыть…**4041Открывает существующий файл с помощью диалога «Открыть».4243**Последние файлы**4445Открывает список последних файлов. Щелчок по файлу открывает его.4647**Открыть модуль…**4849Открывает существующий модуль (поиск по sys.path).5051**Обозреватель классов**5253Показывает функции, классы и методы в текущем файле редактора в виде древовидной структуры. В оболочке сначала нужно открыть модуль.5455**Обозреватель путей**5657Показывает каталоги из sys.path, модули, функции, классы и методы в виде dревовидной структуры.5859**Сохранить**6061Сохраняет текущее окно в соответствующий файл, если таковой имеется. В окнах, которые были изменены после открытия или последнего сохранения, в начале и в конце заголовка окна отображается символ \*. Если соответствующий файл отсутствует, выполняется команда «Сохранить как».6263**Сохранить как…**6465Сохранить текущее окно через диалог «Сохранить как». Сохранённый файл становится новым связанным файлом для окна.6667**Сохранить копию как…**6869Сохранить текущее окно в другой файл, не меняя связанный файл.7071**Печать окна**7273Выводит текущее окно на принтер по умолчанию.7475**Закрыть**7677Закрывает текущее окно (предлагает сохранить, если есть несохранённые изменения).7879**Выход**8081Закрывает все окна и завершает работу IDLE (предлагает сохранить несохранённые окна).8283### 25.5.1.2. Меню Правка (Shell и Editor)8485**Отменить**8687Отменяет последнее изменение в текущем окне. Можно отменить до 1000 изменений.8889**Повторить**9091Повторяет последнюю отменённую операцию в текущем окне.9293**Вырезать**9495Копирует выделение в системный буфер обмена, затем удаляет выделение.9697**Копировать**9899Копирует выделение в системный буфер обмена.100101**Вставить**102103Вставляет содержимое системного буфера обмена в текущее окно.104105Функции работы с буфером обмена также доступны в контекстных меню.106107**Выделить всё**108109Выделяет всё содержимое текущего окна.110111**Найти…**112113Открывает диалог поиска с множеством параметров114115**Найти снова**116117Повторяет последний поиск, если он был выполнен.118119**Найти выделение**120121Ищет текущую выделенную строку, если она есть.122123**Найти в файлах…**124125Открывает диалог поиска по файлам. Результаты выводятся в новое окно.126127**Заменить…**128129Открывает диалог поиска и замены.130131**Перейти к строке**132133Перемещает курсор на указанный номер строки и делает эту строку видимой.134135**Показать автодополнения**136137Открывает прокручиваемый список для выбора ключевых слов и атрибутов. См. раздел «Автодополнение» в разделе «Советы» ниже.138139**Дополнить слово**140141Разворачивает введённый префикс до полного слова в том же окне; повторное нажатие даёт другое дополнение.142143**Показать подсказку вызова**144145После незакрытой скобки функции открывает небольшое окно с подсказками по параметрам функции.146147**Показать окружающие скобки**148149Подсвечивает окружающую скобку.150151### 25.5.1.3. Меню Формат (только окно редактора)152153**Увеличить отступ выделенного фрагмента**154155Сдвигает выделенные строки вправо на ширину отступа (по умолчанию 4 пробела).156157**Уменьшить отступ выделенного фрагмента**158159Сдвигает выделенные строки влево на ширину отступа (по умолчанию 4 пробела).160161**Закомментировать выделенный фрагмент**162163Вставляет ## перед выделенными строками.164165**Раскомментировать выделенный фрагмент**166167Удаляет начальные символы # или ## из выделенных строк.168169**Преобразовать в табуляцию**170171Превращает *начальные* последовательности пробелов в табуляцию. (Рекомендуется использовать блоки из 4 пробелов для отступов в коде Python.)172173**Преобразовать табуляцию в пробелы**174175Превращает *все* табуляции в правильное количество пробелов.176177**Переключить режим табуляции**178179Открывает диалог для переключения между отступами пробелами и табуляцией.180181**Новая ширина отступа**182183Открывает диалог для изменения ширины отступа. Принятое по умолчанию значение в сообществе Python – 4 пробела.184185**Форматировать абзац**186187Переформатирует текущий абзац, разделённый пустыми строками, в блоке комментариев или многострочной строке, или выбранную строку внутри строки. Все строки абзаца будут отформатированы так, чтобы длина не превышала N столбцов, где по умолчанию N = 72.188189**Удалить завершающие пробелы**190191Удаляет пробелы в конце строки и другие пробельные символы после последнего непробельного символа строки, применяя str.rstrip к каждой строке, включая строки внутри многострочных строк.192193### 25.5.1.4. Меню Выполнить (только окно редактора)194195**Оболочка Python**196197Открыть или активировать окно оболочки Python.198199**Проверить модуль**200201Проверяет синтаксис модуля, открытого в окне редактора. Если модуль не был сохранён, IDLE предложит сохранить его или выполнит автосохранение в зависимости от настройки на вкладке General диалога Idle Settings. Если есть синтаксическая ошибка, её примерное местоположение указывается в окне редактора.202203**Запустить модуль**204205Выполнить проверку модуля (см. выше). Если ошибок нет, перезапустить оболочку для очистки среды, затем выполнить модуль. Вывод отображается в окне Shell. Обратите внимание, что для вывода требуется использование `print` или `write`. По завершении выполнения Shell сохраняет фокус и отображает приглашение. В этот момент можно интерактивно исследовать результаты выполнения. Это похоже на выполнение файла с помощью `python -i file` в командной строке.206207### 25.5.1.5. Меню Shell (только окно Shell)208209**Просмотр последнего перезапуска**210211Прокручивает окно оболочки к последнему перезапуску оболочки.212213**Перезапустить оболочку**214215Перезапустите оболочку, чтобы очистить окружение.216217**Прервать выполнение**218219Останавливает выполняющуюся программу.220221### 25.5.1.6. Меню Отладка (только окно Shell)222223**Перейти к файлу/строке**224225Проверяет текущую строку (на которой находится курсор) и строку над ней на наличие имени файла и номера строки. Если найдено, открывает файл (если ещё не открыт) и показывает эту строку. Используется для просмотра строк исходного кода, указанных в трассировке исключения, и строк, найденных с помощью «Найти в файлах». Также доступно в контекстном меню окна оболочки и окон вывода.226227**Отладчик (вкл/выкл)**228229При активации код, введённый в оболочке или запущенный из редактора, будет выполняться под отладчиком. В редакторе точки останова можно установить через контекстное меню. Эта функция всё ещё не завершена и в некоторой степени экспериментальна.230231**Просмотр стека**232233Показывает трассировку стека последнего исключения в виджете-дереве с доступом к локальным и глобальным переменным.234235**Автоматически открывать просмотр стека**236237Включает/выключает автоматическое открытие просмотра стека при необработанном исключении.238239### 25.5.1.7. Меню Параметры (Shell и Editor)240241**Настроить IDLE**242243Открывает диалоговое окно конфигурации для изменения следующих параметров: шрифты, отступы, сочетания клавиш, цветовые темы текста, начальные окна и размер, дополнительные источники справки и расширения (см. ниже). В macOS диалог конфигурации открывается выбором пункта «Настройки» в меню приложения. Чтобы использовать новую встроенную цветовую тему (IDLE Dark) в старых версиях IDLE, сохраните её как новую пользовательскую тему.244245Нестандартные пользовательские настройки сохраняются в каталоге .idlerc в домашнем каталоге пользователя. Проблемы, вызванные некорректными файлами конфигурации, решаются редактированием или удалением одного или нескольких файлов в .idlerc.246247**Контекст кода (переключатель) (только окно редактора)**248249Открывает панель в верхней части окна редактора, показывающую контекст блоков кода, который прокручен выше верхней границы окна. Щелчок по строке в этой панели перемещает эту строку в верхнюю часть редактора.250251### 25.5.1.8. Меню Окно (Shell и Editor)252253**Развернуть по высоте**254255Переключает окно между нормальным размером и максимальной высотой. Начальный размер по умолчанию – 40 строк на 80 символов, если не изменён на вкладке «Общие» в диалоге настройки IDLE.256257Остальная часть этого меню содержит список всех открытых окон; выберите одно, чтобы вывести его на передний план (при необходимости развернув из свёрнутого состояния).258259### 25.5.1.9. Меню Справка (Shell и Editor)260261**О программе IDLE**262263Отображает версию, авторские права, лицензию, список разработчиков и дополнительную информацию.264265**Справка по IDLE**266267Отображает этот документ IDLE с подробным описанием пунктов меню, базового редактирования и навигации, а также другими советами.268269**Документация Python**270271Открывает локальную документацию Python, если она установлена, или запускает веб-браузер и открывает docs.python.org с последней версией документации Python.272273**Демонстрация Turtle**274275Запускает модуль turtledemo с примерами кода Python и рисунками черепашки.276277Дополнительные источники справки можно добавить в диалоге настройки IDLE на вкладке «Общие». См. подраздел «Источники справки» ниже для получения дополнительной информации о пунктах меню «Справка».278279### 25.5.1.10. Контекстные меню280281Контекстное меню открывается щелчком правой кнопкой мыши в окне (Control+щелчок на macOS). В контекстных меню доступны стандартные функции буфера обмена, которые также есть в меню Edit.282283**Вырезать**284285Копирует выделение в системный буфер обмена, затем удаляет выделение.286287**Копировать**288289Копирует выделение в системный буфер обмена.290291**Вставить**292293Вставляет содержимое системного буфера обмена в текущее окно.294295Окна редактора также имеют функции точек останова. Строки с установленной точкой останова специально помечаются. Точки останова действуют только при запуске под отладчиком. Точки останова для файла сохраняются в каталоге .idlerc пользователя.296297**Установить точку останова**298299Устанавливает точку останова на текущей строке.300301**Снять точку останова**302303Снимает точку останова на этой строке.304305Окна Shell и Output также содержат следующие пункты.306307**Перейти к файлу/строке**308309То же, что в меню Debug.310311Окно Shell также имеет функцию сжатия вывода, описанную в подразделе *Окно Python Shell* ниже.312313**Сжать**314315Если курсор находится над строкой вывода, сжать весь вывод между кодом выше и приглашением ниже до метки «Сжатый текст».316317## 25.5.2. Редактирование и навигация318319### 25.5.2.1. Окна редактора320321IDLE может открывать окна редактора при запуске в зависимости от настроек и способа запуска IDLE. В дальнейшем для этого используется меню «Файл». Для каждого файла может быть открыто только одно окно редактора.322323В строке заголовка отображаются имя файла, полный путь, а также версия Python и IDLE, в которой работает окно. В строке состояния отображаются номер строки («Ln») и номер столбца («Col»). Нумерация строк начинается с 1, столбцов – с 0.324325IDLE считает, что файлы с известным расширением .py\* содержат код Python, а остальные – нет. Код Python запускается через меню «Выполнить».326327### 25.5.2.2. Привязки клавиш328329В этом разделе под «C» подразумевается клавиша `Control` в Windows и Unix и клавиша `Command` в macOS.330331- `Backspace` удаляет влево; `Del` удаляет вправо332- `C-Backspace` удаляет слово слева; `C-Del` удаляет слово справа333- Клавиши со стрелками и `Page Up`/`Page Down` для перемещения334- `C-LeftArrow` и `C-RightArrow` перемещают по словам335- `Home`/`End` переходят в начало/конец строки336- `C-Home`/`C-End` переходят в начало/конец файла337- Некоторые полезные привязки Emacs унаследованы от Tcl/Tk:338339  > - `C-a` начало строки340  > - `C-e` конец строки341  > - `C-k` вырезать строку (но не помещает её в буфер обмена)342  > - `C-l` центрировать окно вокруг точки вставки343  > - `C-b` переместиться на один символ назад без удаления (обычно для этого также можно использовать клавишу со стрелкой)344  > - `C-f` переместиться на один символ вперёд без удаления (обычно для этого также можно использовать клавишу со стрелкой)345  > - `C-p` подняться на одну строку вверх (обычно для этого также можно использовать клавишу со стрелкой)346  > - `C-d` удалить следующий символ347348Стандартные сочетания клавиш (например, `C-c` для копирования и `C-v` для вставки) могут работать. Сочетания клавиш выбираются в диалоге Configure IDLE.349350### 25.5.2.3. Автоматические отступы351352После оператора, открывающего блок, следующая строка получает отступ в 4 пробела (в окне Python Shell – одна табуляция). После некоторых ключевых слов (break, return и т.д.) отступ следующей строки уменьшается. В начале строки `Backspace` удаляет до 4 пробелов, если они есть. `Tab` вставляет пробелы (в окне Python Shell – одну табуляцию); количество зависит от ширины отступа. В настоящее время из-за ограничений Tcl/Tk табуляция ограничена четырьмя пробелами.353354См. также команды indent/dedent region в меню Edit.355356### 25.5.2.4. Автодополнение357358Автодополнение предоставляется для функций, классов и атрибутов классов – как встроенных, так и определённых пользователем. Автодополнение также предоставляется для имён файлов.359360Окно автодополнения (ACW) открывается после заданной задержки (по умолчанию две секунды) после ввода точки ‘.’ или (в строке) os.sep. Если после одного из этих символов (плюс ноль или более других символов) нажать Tab, ACW откроется немедленно при наличии возможного продолжения.361362Если для введённых символов существует только одно возможное дополнение, `Tab` вставит его без открытия ACW.363364Команда «Show Completions» принудительно открывает окно дополнений; по умолчанию `C-space` открывает окно дополнений. В пустой строке оно будет содержать файлы текущего каталога. На пустой строке оно будет содержать встроенные и определённые пользователем функции и классы в текущих пространствах имён, а также импортированные модули. Если введены какие-то символы, ACW попытается уточнить выбор.365366Если введена строка символов, выделение в окне автодополнения перейдёт к записи, наиболее соответствующей этим символам. Ввод `tab` приведёт к вставке самого длинного однозначного совпадения в окно редактора или оболочки. Два `tab` подряд вставят текущее выделение окна автодополнения, как и Enter или двойной щелчок. Клавиши курсора, Page Up/Down, выбор мышью и колёсико прокрутки работают с окном автодополнения.367368«Скрытые» атрибуты можно получить, введя начало скрытого имени после точки ‘.’, например ‘\_’. Это позволяет получить доступ к модулям с установленным `__all__` или к закрытым атрибутам классов.369370Автодополнение и функция «Expand Word» могут сэкономить много ввода!371372Автодополнение в настоящее время ограничено именами в пространствах имён. Имена в окне редактора, которые не импортированы через `__main__` и [`sys.modules`](https://python-all.ru/3.6/library/sys.html#sys.modules), не будут найдены. Запустите модуль один раз с вашими импортами, чтобы исправить это. Обратите внимание, что IDLE сама помещает довольно много модулей в sys.modules, поэтому многое может быть найдено по умолчанию, например, модуль re.373374Если вам не нравится, что ACW появляется без запроса, просто увеличьте задержку или отключите расширение.375376### 25.5.2.5. Подсказки вызова377378Подсказка вызова появляется, когда после имени *доступной* функции вводится `(`. Выражение имени может включать точки и индексы. Подсказка остаётся до тех пор, пока по ней не щёлкнут, курсор не выйдет из области аргументов или не будет введён `)`. Когда курсор находится в части определения с аргументами, меню или сочетание клавиш показывают подсказку.379380Подсказка вызова состоит из сигнатуры функции и первой строки строки документации. Для встроенных функций без доступной сигнатуры подсказка состоит из всех строк до пятой строки или первой пустой строки. Эти детали могут измениться.381382Набор *доступных* функций зависит от того, какие модули были импортированы в пользовательский процесс, включая импортированные самой IDLE, и какие определения были выполнены после последнего перезапуска.383384Например, перезапустите оболочку и введите `itertools.count(`. Появится подсказка вызова, потому что IDLE импортирует itertools в пользовательский процесс для своих нужд. (Это может измениться.) Введите `turtle.write(` – ничего не появится. IDLE не импортирует turtle. Меню и сочетания клавиш тоже ничего не делают. Введите `import turtle`, и тогда `turtle.write(` сработает.385386В редакторе операторы импорта не действуют до запуска файла. Возможно, стоит запустить файл после написания операторов импорта в начале или сразу запустить существующий файл перед редактированием.387388### 25.5.2.6. Окно оболочки Python389390В оболочке IDLE можно вводить, редактировать и вызывать целые операторы. Большинство консолей и терминалов работают только с одной физической строкой за раз.391392При вставке кода в оболочку он не компилируется и не выполняется, пока не будет нажата `Return`. Перед выполнением можно отредактировать вставленный код. Если вставить в оболочку несколько операторов, результатом будет [`SyntaxError`](https://python-all.ru/3.6/library/exceptions.html#SyntaxError), так как несколько операторов компилируются как один.393394Описанные в предыдущих разделах возможности редактирования работают при интерактивном вводе кода. Окно IDLE Shell также реагирует на следующие клавиши.395396- `C-c` прерывает выполняющуюся команду397- `C-d` отправляет конец файла; закрывает окно, если введено в приглашении `>>>`398- `Alt-/` (расширение слова) также полезно для уменьшения объёма ввода399400  История команд401402  - `Alt-p` извлекает предыдущую команду, соответствующую введённому тексту. В macOS используйте `C-p`.403  - `Alt-n` извлекает следующую. В macOS используйте `C-n`.404  - `Return` на любой предыдущей команде извлекает её405406### 25.5.2.7. Цвета текста407408В IDLE по умолчанию используется чёрный текст на белом фоне, но текст окрашивается в зависимости от смысла. Для Shell это вывод Shell, ошибки Shell, вывод пользователя и ошибки пользователя. Для кода Python, в приглашении Shell или в редакторе, это ключевые слова, имена встроенных классов и функций, имена после `class` и `def`, строки и комментарии. Для любого текстового окна это курсор (когда присутствует), найденный текст (когда возможно) и выделенный текст.409410Окрашивание текста выполняется в фоновом режиме, поэтому иногда может быть виден неокрашенный текст. Чтобы изменить цветовую схему, используйте вкладку «Подсветка» в диалоге настройки IDLE. Разметка строк точек останова отладчика в редакторе и текст во всплывающих окнах и диалогах не настраивается пользователем.411412## 25.5.3. Запуск и выполнение кода413414При запуске с опцией `-s` IDLE выполняет файл, на который ссылаются переменные среды `IDLESTARTUP` или [`PYTHONSTARTUP`](https://python-all.ru/3.6/using/cmdline.html#envvar-PYTHONSTARTUP). IDLE сначала проверяет `IDLESTARTUP`; если `IDLESTARTUP` присутствует, запускается указанный файл. Если `IDLESTARTUP` отсутствует, IDLE проверяет `PYTHONSTARTUP`. Файлы, на которые ссылаются эти переменные среды, удобно использовать для хранения функций, часто используемых из Shell IDLE, или для выполнения операторов импорта общих модулей.415416Кроме того, `Tk` также загружает файл запуска, если он существует. Обратите внимание, что Tk-файл загружается безусловно. Этот дополнительный файл – `.Idle.py`, он ищется в домашнем каталоге пользователя. Операторы в этом файле будут выполняться в пространстве имён Tk, поэтому этот файл не подходит для импорта функций, используемых из Python Shell IDLE.417418### 25.5.3.1. Использование командной строки419420```text421idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...422423-c command  run command in the shell window424-d          enable debugger and open shell window425-e          open editor window426-h          print help message with legal combinations and exit427-i          open shell window428-r file     run file in shell window429-s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window430-t title    set title of shell window431-           run stdin in shell (- must be last option before args)432```433434Если есть аргументы:435436- Если используется `-`, `-c` или `r`, все аргументы помещаются в `sys.argv[1:...]`, а `sys.argv[0]` устанавливается в `''`, `'-c'` или `'-r'`. Окно редактора не открывается, даже если это выбрано по умолчанию в диалоге Options.437- В противном случае аргументы являются файлами, открытыми для редактирования, и `sys.argv` отражает аргументы, переданные самому IDLE.438439### 25.5.3.2. Ошибки при запуске440441IDLE использует сокет для связи между процессом графического интерфейса IDLE и процессом выполнения пользовательского кода. Соединение должно устанавливаться при каждом запуске или перезапуске оболочки. (Последнее обозначается разделительной линией с надписью «RESTART».) Если пользовательский процесс не может подключиться к процессу GUI, отображается `Tk` окно ошибки с сообщением «cannot connect», которое направляет пользователя сюда. Затем процесс завершается.442443Частая причина сбоя – файл пользователя с тем же именем, что и модуль стандартной библиотеки, например *random.py* и *tkinter.py*. Когда такой файл находится в той же директории, что и файл, который должен быть запущен, IDLE не может импортировать файл из стандартной библиотеки. Текущее решение – переименовать пользовательский файл.444445Хотя и реже, чем в прошлом, антивирус или межсетевой экран могут блокировать соединение. Если программу нельзя научить разрешать соединение, её необходимо отключить для работы IDLE. Разрешать это внутреннее соединение безопасно, поскольку никакие данные не видны на внешних портах. Аналогичная проблема – неверная настройка сети, блокирующая соединения.446447Проблемы с установкой Python иногда мешают работе IDLE: несколько версий могут конфликтовать, или для одной установки могут потребоваться права администратора. Если конфликт не устранён, или невозможно или нежелательно запускать от имени администратора, проще всего полностью удалить Python и начать заново.448449Проблемой может быть процесс-зомби pythonw.exe. В Windows используйте Диспетчер задач, чтобы обнаружить и завершить его. Иногда перезапуск, вызванный сбоем программы или прерыванием с клавиатуры (Control-C), может не привести к подключению. Закрытие окна с ошибкой или команда Restart Shell в меню Shell могут исправить временную проблему.450451При первом запуске IDLE пытается прочитать пользовательские конфигурационные файлы в ~/.idlerc/ (~ – домашний каталог пользователя). Если возникает проблема, должно отобразиться сообщение об ошибке. Не считая случайных сбоев диска, этого можно избежать, никогда не редактируя файлы вручную, а используя диалог конфигурации в меню Options. Если проблема возникла, решением может быть удаление одного или нескольких конфигурационных файлов.452453Если IDLE завершается без сообщения и не был запущен из консоли, попробуйте запустить из консоли (`python -m idlelib)` и посмотрите, появится ли сообщение.454455### 25.5.3.3. Выполнение пользовательского кода456457За редкими исключениями, результат выполнения кода Python в IDLE должен быть таким же, как при выполнении того же кода стандартным способом – напрямую с помощью Python в текстовой системной консоли или окне терминала. Однако различия в интерфейсе и работе иногда влияют на видимые результаты. Например, `sys.modules` начинается с большим количеством записей, а `threading.activeCount()` возвращает 2 вместо 1.458459По умолчанию IDLE выполняет пользовательский код в отдельном процессе ОС, а не в процессе пользовательского интерфейса, который управляет оболочкой и редактором. В процессе выполнения он заменяет `sys.stdin`, `sys.stdout` и `sys.stderr` объектами, которые получают ввод из окна оболочки и отправляют вывод в него. Исходные значения, хранящиеся в `sys.__stdin__`, `sys.__stdout__` и `sys.__stderr__`, не изменяются, но могут быть `None`.460461Когда Shell находится в фокусе, он управляет клавиатурой и экраном. Обычно это незаметно, но функции, которые напрямую обращаются к клавиатуре и экрану, работать не будут. К ним относятся системно-зависимые функции, определяющие, была ли нажата клавиша, и если да, то какая.462463Замена стандартных потоков IDLE не наследуется подпроцессами, созданными в процессе выполнения, будь то напрямую пользовательским кодом или модулями, такими как multiprocessing. Если такой подпроцесс использует `input` из sys.stdin или `print` или `write` для sys.stdout или sys.stderr, IDLE следует запускать в окне командной строки. Тогда вторичный подпроцесс будет привязан к этому окну для ввода и вывода.464465Если `sys` сбрасывается пользовательским кодом, например, с помощью `importlib.reload(sys)`, изменения IDLE теряются, и ввод с клавиатуры и вывод на экран будут работать неправильно.466467### 25.5.3.4. Вывод пользователя в оболочке468469Когда программа выводит текст, результат определяется соответствующим устройством вывода. Когда IDLE выполняет пользовательский код, `sys.stdout` и `sys.stderr` подключены к области отображения Shell IDLE. Некоторые его функции унаследованы от базового виджета Tk Text. Другие являются программными дополнениями. Там, где это важно, Shell спроектирован для разработки, а не для эксплуатации в промышленной среде.470471Например, Shell никогда не отбрасывает вывод. Программа, которая отправляет неограниченный вывод в Shell, в конечном итоге заполнит память, что приведет к ошибке памяти. Напротив, некоторые системные текстовые окна сохраняют только последние n строк вывода. Например, консоль Windows сохраняет настраиваемые пользователем от 1 до 9999 строк, по умолчанию 300.472473Текстовые виджеты отображают подмножество Unicode – основную многоязычную плоскость (BMP). Какие символы получают правильный глиф вместо замещающего прямоугольника, зависит от операционной системы и установленных шрифтов. Символы новой строки вызывают появление следующего текста на новой строке, но другие управляющие символы либо заменяются прямоугольником, либо удаляются. Однако `repr()`, который используется для интерактивного эха значений выражений, заменяет управляющие символы, некоторые кодовые точки BMP и все символы не из BMP на управляющие последовательности перед выводом.474475Обычный вывод и вывод ошибок, как правило, отделены (на отдельных строках) от ввода кода и друг от друга. Они получают разные цвета подсветки.476477Для трассировок SyntaxError обычная пометка ‘^’ в месте обнаружения ошибки заменяется выделением текста цветом ошибки. Когда код, запущенный из файла, вызывает другие исключения, можно щелкнуть правой кнопкой мыши по строке трассировки, чтобы перейти к соответствующей строке в редакторе IDLE. Файл будет открыт при необходимости.478479В Shell есть специальная возможность сжимать строки вывода до метки «Сжатый текст». Это делается автоматически для вывода, превышающего N строк (по умолчанию N = 50). N можно изменить в разделе PyShell на вкладке General диалога Settings. Вывод с меньшим количеством строк можно сжать, щелкнув по нему правой кнопкой мыши. Это может быть полезно для строк, достаточно длинных, чтобы замедлить прокрутку.480481Сжатый вывод разворачивается на месте двойным щелчком по метке. Его также можно отправить в буфер обмена или отдельное окно просмотра, щелкнув правой кнопкой мыши по метке.482483### 25.5.3.5. Разработка приложений tkinter484485IDLE намеренно отличается от стандартного 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()`.486487Большинство tkinter-программ запускают `root.mainloop()`, который обычно не возвращает управление, пока tk-приложение не будет уничтожено. Если программа запускается с помощью `python -i` или из редактора IDLE, приглашение `>>>` shell не появляется, пока `mainloop()` не вернётся, после чего уже не с чем взаимодействовать.488489При запуске tkinter-программы из редактора IDLE можно закомментировать вызов mainloop. Тогда сразу появляется приглашение shell, и можно взаимодействовать с работающим приложением. Нужно только не забыть снова включить вызов mainloop при запуске в стандартном Python.490491### 25.5.3.6. Запуск без подпроцесса492493По умолчанию IDLE выполняет пользовательский код в отдельном подпроцессе через сокет, использующий внутренний интерфейс loopback. Это соединение не видно извне, и никакие данные не отправляются и не принимаются из Интернета. Если брандмауэр всё равно выдаёт предупреждение, его можно игнорировать.494495Если попытка установить сокетное соединение не удаётся, IDLE уведомит вас. Такие сбои иногда носят временный характер, но если они постоянны, проблема может заключаться либо в блокировке соединения брандмауэром, либо в неправильной конфигурации конкретной системы. Пока проблема не решена, можно запускать IDLE с ключом командной строки -n.496497Если IDLE запущен с ключом командной строки -n, он будет работать в одном процессе и не будет создавать подпроцесс, запускающий RPC-сервер выполнения Python. Это может быть полезно, если Python не может создать подпроцесс или сокетный интерфейс RPC на вашей платформе. Однако в этом режиме пользовательский код не изолирован от самого IDLE. Кроме того, среда не перезапускается при выборе Run/Run Module (F5). Если ваш код был изменён, необходимо выполнить reload() для затронутых модулей и повторно импортировать любые конкретные элементы (например, from foo import baz), чтобы изменения вступили в силу. По этим причинам предпочтительнее запускать IDLE с подпроцессом по умолчанию, если это возможно.498499Устарело с версии 3.4.500501## 25.5.4. Справка и настройки502503### 25.5.4.1. Источники справки504505Пункт меню «IDLE Help» отображает форматированную HTML-версию главы об IDLE из справочника по библиотеке. Результат, в окне только для чтения на tkinter, близок к тому, что видно в веб-браузере. Пролистывайте текст с помощью колесика мыши, полосы прокрутки или удерживая клавиши вверх/вниз. Или нажмите кнопку TOC (Table of Contents) и выберите заголовок раздела в открывшемся окне.506507Пункт меню Help «Python Docs» открывает обширные источники справки, включая руководства, доступные на docs.python.org/x.y, где «x.y» – это текущая версия Python. Если в вашей системе есть офлайн-копия документации (это может быть опцией установки), будет открыта она.508509Выбранные URL можно в любое время добавить или удалить из меню Help с помощью вкладки General диалога Configure IDLE.510511### 25.5.4.2. Настройка параметров512513Настройки шрифта, подсветки, клавиш и общие настройки можно изменить через Configure IDLE в меню Option. Клавиши можно определять пользовательски; IDLE поставляется с четырьмя встроенными наборами клавиш. Кроме того, пользователь может создать пользовательский набор клавиш в диалоге Configure IDLE на вкладке keys.514515### 25.5.4.3. IDLE на macOS516517В настройках системы: Dock, можно установить «Prefer tabs when opening documents» в значение «Always». Эта настройка несовместима с графической библиотекой tk/tkinter, используемой в IDLE, и нарушает работу некоторых функций IDLE.518519### 25.5.4.4. Расширения520521IDLE содержит механизм расширений. Настройки расширений можно изменить на вкладке «Extensions» диалога настроек. Обратитесь к началу файла config-extensions.def в каталоге idlelib для получения дополнительной информации. Единственное текущее расширение по умолчанию – zzdummy, пример, также используемый для тестирования.522