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

idle.md

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

1> **Источник:** https://python-all.ru/3.10/library/idle.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# IDLE89**Исходный код:** [Lib/idlelib/](https://python-all.ru/src/3.10/Lib/idlelib)1011---1213IDLE – это интегрированная среда разработки и обучения Python.1415IDLE имеет следующие возможности:1617- написан на 100% чистом Python с использованием GUI-тулкита [`tkinter`](https://python-all.ru/3.10/library/tkinter.html#module-tkinter)18- кроссплатформенность: в основном одинаково работает на Windows, Unix и macOS19- окно оболочки Python (интерактивный интерпретатор) с цветовой подсветкой вводимого кода, вывода и сообщений об ошибках20- многооконный текстовый редактор с множественной отменой, подсветкой синтаксиса Python, умными отступами, подсказками вызова, автозавершением и другими функциями21- поиск в любом окне, замена в окнах редактора и поиск по нескольким файлам (grep)22- отладчик с постоянными точками останова, пошаговым выполнением и просмотром глобального и локального пространства имён23- настройки, обозреватели и другие диалоговые окна2425## Меню2627IDLE имеет два основных типа окон: окно оболочки (Shell) и окно редактора (Editor). Одновременно может быть открыто несколько окон редактора. В Windows и Linux каждое окно имеет собственное верхнее меню. В описании каждого меню ниже указано, к какому типу окна оно относится.2829Окна вывода, например используемые для Edit ⇒ Find in Files, являются подтипом окна редактора. В настоящее время они имеют то же верхнее меню, но другой заголовок по умолчанию и контекстное меню.3031В macOS есть одно меню приложения. Оно динамически меняется в зависимости от выбранного окна. В нём есть меню IDLE, а некоторые из описанных ниже пунктов перемещены в другие места для соответствия рекомендациям Apple.3233### Меню File (для окон Shell и Editor)3435**Новый файл**3637Создаёт новое окно для редактирования файла.3839**Открыть…**4041Открывает существующий файл с помощью диалога «Открыть».4243**Открыть модуль…**4445Открывает существующий модуль (поиск по sys.path).4647**Последние файлы**4849Открывает список последних файлов. Щелчок по файлу открывает его.5051**Обозреватель модулей**5253Показывает функции, классы и методы в текущем файле редактора в виде древовидной структуры. В оболочке сначала нужно открыть модуль.5455**Обозреватель путей**5657Показывает каталоги из sys.path, модули, функции, классы и методы в виде dревовидной структуры.5859**Сохранить**6061Сохраняет текущее окно в соответствующий файл, если таковой имеется. В окнах, которые были изменены после открытия или последнего сохранения, в начале и в конце заголовка окна отображается символ \*. Если соответствующий файл отсутствует, выполняется команда «Сохранить как».6263**Сохранить как…**6465Сохраняет текущее окно через диалог «Сохранить как». Сохранённый файл становится новым связанным файлом для окна. (Если в менеджере файлов настроено скрывать расширения, текущее расширение будет опущено в поле имени файла. Если в новом имени файла нет точки, то для Python и текстовых файлов будут добавлены расширения «.py» и «.txt», за исключением macOS Aqua, где расширение «.py» добавляется для всех файлов.)6667**Сохранить копию как…**6869Сохраняет содержимое текущего окна в другой файл, не изменяя связанный файл. (О расширениях файлов см. примечание к пункту «Сохранить как» выше.)7071**Печать окна**7273Выводит текущее окно на принтер по умолчанию.7475**Закрыть окно**7677Закрывает текущее окно (если в редакторе есть несохранённые изменения, предлагает сохранить; если в оболочке Shell есть несохранённые изменения, предлагает завершить выполнение). Вызов `exit()` или `close()` в окне Shell также закрывает его. Если это единственное окно, IDLE также завершает работу.7879**Выход из IDLE**8081Закрывает все окна и завершает работу IDLE (предлагает сохранить несохранённые изменения в окнах редактирования).8283### Меню «Правка» (оболочка Shell и редактор)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Открывает прокручиваемый список для выбора существующих имён. См. [Автодополнение](https://python-all.ru/3.10/library/idle.html#completions) в разделе «Редактирование и навигация» ниже.138139**Дополнить слово**140141Разворачивает введённый префикс до полного слова в том же окне; повторное нажатие даёт другое дополнение.142143**Показать подсказку вызова**144145После незакрытой скобки для функции открывает небольшое окно с подсказками по параметрам функции. См. [Подсказки вызова](https://python-all.ru/3.10/library/idle.html#calltips) в разделе «Редактирование и навигация» ниже.146147**Показать окружающие скобки**148149Подсвечивает окружающую скобку.150151### Меню «Формат» (только в окне редактора)152153**Форматировать абзац**154155Переформатирует текущий абзац, разделённый пустыми строками, в блоке комментариев или многострочной строке, или выбранную строку внутри строки. Все строки абзаца будут отформатированы так, чтобы длина не превышала N столбцов, где по умолчанию N = 72.156157**Увеличить отступ выделенного фрагмента**158159Сдвигает выделенные строки вправо на ширину отступа (по умолчанию 4 пробела).160161**Уменьшить отступ выделенного фрагмента**162163Сдвигает выделенные строки влево на ширину отступа (по умолчанию 4 пробела).164165**Закомментировать выделенный фрагмент**166167Вставляет ## перед выделенными строками.168169**Раскомментировать выделенный фрагмент**170171Удаляет начальные символы # или ## из выделенных строк.172173**Преобразовать в табуляцию**174175Превращает *начальные* последовательности пробелов в табуляцию. (Рекомендуется использовать блоки из 4 пробелов для отступов в коде Python.)176177**Преобразовать табуляцию в пробелы**178179Превращает *все* табуляции в правильное количество пробелов.180181**Переключить режим табуляции**182183Открывает диалог для переключения между отступами пробелами и табуляцией.184185**Новая ширина отступа**186187Открывает диалог для изменения ширины отступа. Принятое по умолчанию значение в сообществе Python – 4 пробела.188189**Удалить завершающие пробельные символы**190191Удаляет завершающие пробелы и другие пробельные символы после последнего непробельного символа в строке, применяя str.rstrip к каждой строке, включая строки внутри многострочных строк. За исключением окон оболочки, удаляет лишние символы новой строки в конце файла.192193### Меню «Выполнить» (только в окне редактора)194195**Запустить модуль**196197Выполняет [Проверку модуля](https://python-all.ru/3.10/library/idle.html#check-module). Если ошибок нет, перезапускает оболочку для очистки окружения, затем выполняет модуль. Вывод отображается в окне оболочки. Обратите внимание, что для вывода требуется использование `print` или `write`. После завершения выполнения оболочка сохраняет фокус и отображает приглашение. В этот момент можно интерактивно исследовать результат выполнения. Это аналогично выполнению файла с помощью `python -i file` в командной строке.198199**Запуск… Настраиваемый**200201То же, что и [Запуск модуля](https://python-all.ru/3.10/library/idle.html#run-module), но запускает модуль с настраиваемыми параметрами. *Аргументы командной строки* расширяют [`sys.argv`](https://python-all.ru/3.10/library/sys.html#sys.argv), как если бы они были переданы в командной строке. Модуль можно запустить в оболочке без перезапуска.202203**Проверить модуль**204205Проверяет синтаксис модуля, открытого в окне редактора. Если модуль не был сохранён, IDLE предложит сохранить его или выполнит автосохранение в зависимости от настройки на вкладке General диалога Idle Settings. Если есть синтаксическая ошибка, её примерное местоположение указывается в окне редактора.206207**Оболочка Python**208209Открыть или активировать окно оболочки Python.210211### Меню оболочки (только окно оболочки)212213**Просмотр последнего перезапуска**214215Прокручивает окно оболочки к последнему перезапуску оболочки.216217**Перезапустить оболочку**218219Перезапускает оболочку для очистки окружения и сброса отображения и обработки исключений.220221**Предыдущая команда**222223Циклически перебирает более ранние команды в истории, которые соответствуют текущему вводу.224225**Следующая команда**226227Циклически перебирает более поздние команды в истории, которые соответствуют текущему вводу.228229**Прервать выполнение**230231Останавливает выполняющуюся программу.232233### Меню отладки (только окно оболочки)234235**Перейти к файлу/строке**236237Проверяет текущую строку (на которой находится курсор) и строку над ней на наличие имени файла и номера строки. Если найдено, открывает файл (если ещё не открыт) и показывает эту строку. Используется для просмотра строк исходного кода, указанных в трассировке исключения, и строк, найденных с помощью «Найти в файлах». Также доступно в контекстном меню окна оболочки и окон вывода.238239**Отладчик (вкл/выкл)**240241При активации код, введённый в оболочке или запущенный из редактора, будет выполняться под отладчиком. В редакторе точки останова можно установить через контекстное меню. Эта функция всё ещё не завершена и в некоторой степени экспериментальна.242243**Просмотр стека**244245Показывает трассировку стека последнего исключения в виджете-дереве с доступом к локальным и глобальным переменным.246247**Автоматически открывать просмотр стека**248249Включает/выключает автоматическое открытие просмотра стека при необработанном исключении.250251### Меню параметров (оболочка и редактор)252253**Настроить IDLE**254255Открывает диалог настройки и позволяет изменить следующие параметры: шрифты, отступы, сочетания клавиш, цветовые темы текста, начальные окна и размер, дополнительные источники справки и расширения. На macOS откройте диалог настройки, выбрав Preferences в меню приложения. Для получения дополнительных сведений см. [Настройка параметров](https://python-all.ru/3.10/library/idle.html#preferences) в разделе «Справка и настройки».256257Большинство параметров конфигурации применяются ко всем окнам или ко всем будущим окнам. Параметры, перечисленные ниже, применяются только к активному окну.258259**Показать/скрыть контекст кода (только окно редактора)**260261Открывает панель в верхней части окна редактирования, которая показывает контекст блоков кода, прокрученного выше верхнего края окна. См. [Контекст кода](https://python-all.ru/3.10/library/idle.html#code-context) в разделе «Редактирование и навигация» ниже.262263**Показать/скрыть номера строк (только в окне редактора)**264265Открывает столбец слева от окна редактирования, в котором отображается номер каждой строки текста. По умолчанию отключено, это можно изменить в настройках (см. [Настройка параметров](https://python-all.ru/3.10/library/idle.html#preferences)).266267**Развернуть/восстановить высоту**268269Переключает окно между обычным размером и максимальной высотой. Изначальный размер по умолчанию – 40 строк на 80 символов, если не изменён на вкладке General диалога Configure IDLE. Максимальная высота для экрана определяется при кратковременном разворачивании окна во весь экран во время первого увеличения. Изменение настроек экрана может сделать сохранённую высоту недействительной. Этот переключатель не действует, когда окно развёрнуто на весь экран.270271### Меню Window (Shell и Editor)272273Отображает список всех открытых окон; выберите одно, чтобы вывести его на передний план (при необходимости восстановив из свёрнутого состояния).274275### Меню Help (Shell и Editor)276277**О программе IDLE**278279Отображает версию, авторские права, лицензию, список разработчиков и дополнительную информацию.280281**Справка по IDLE**282283Отображает этот документ IDLE с подробным описанием пунктов меню, базового редактирования и навигации, а также другими советами.284285**Документация Python**286287Открывает локальную документацию Python, если она установлена, или запускает веб-браузер и открывает docs.python.org с последней версией документации Python.288289**Демонстрация Turtle**290291Запускает модуль turtledemo с примерами кода Python и рисунками черепашки.292293Дополнительные источники справки можно добавить здесь с помощью диалога Configure IDLE на вкладке General. Подробнее о пунктах меню Help см. в подразделе [Источники справки](https://python-all.ru/3.10/library/idle.html#help-sources) ниже.294295### Контекстные меню296297Контекстное меню открывается щелчком правой кнопкой мыши в окне (Control+щелчок на macOS). В контекстных меню доступны стандартные функции буфера обмена, которые также есть в меню Edit.298299**Вырезать**300301Копирует выделение в системный буфер обмена, затем удаляет выделение.302303**Копировать**304305Копирует выделение в системный буфер обмена.306307**Вставить**308309Вставляет содержимое системного буфера обмена в текущее окно.310311В окнах редактора также есть функции точек останова. Строки с установленной точкой останова специально помечаются. Точки останова действуют только при запуске под отладчиком. Точки останова для файла сохраняются в каталоге пользователя `.idlerc`.312313**Установить точку останова**314315Устанавливает точку останова на текущей строке.316317**Снять точку останова**318319Снимает точку останова на этой строке.320321Окна Shell и Output также содержат следующие пункты.322323**Перейти к файлу/строке**324325То же, что в меню Debug.326327В окне Shell также есть функция сжатия вывода, описанная в подразделе *Окно Python Shell* ниже.328329**Сжать**330331Если курсор находится над строкой вывода, сжать весь вывод между кодом выше и приглашением ниже до метки «Сжатый текст».332333## Редактирование и навигация334335### Окна редактора336337IDLE может открывать окна редактора при запуске в зависимости от настроек и способа запуска IDLE. В дальнейшем для этого используется меню «Файл». Для каждого файла может быть открыто только одно окно редактора.338339В строке заголовка отображаются имя файла, полный путь, а также версия Python и IDLE, в которой работает окно. В строке состояния отображаются номер строки («Ln») и номер столбца («Col»). Нумерация строк начинается с 1, столбцов – с 0.340341IDLE считает, что файлы с известным расширением .py\* содержат код Python, а остальные – нет. Код Python запускается через меню «Выполнить».342343### Сочетания клавиш344345В этом разделе под «C» подразумевается клавиша `Control` в Windows и Unix и клавиша `Command` в macOS.346347- `Backspace` удаляет влево; `Del` удаляет вправо348- `C-Backspace` удаляет слово слева; `C-Del` удаляет слово справа349- Клавиши со стрелками и `Page Up`/`Page Down` для перемещения350- `C-LeftArrow` и `C-RightArrow` перемещают по словам351- `Home`/`End` переходят в начало/конец строки352- `C-Home`/`C-End` переходят в начало/конец файла353- Некоторые полезные привязки Emacs унаследованы от Tcl/Tk:354355  > - `C-a` начало строки356  > - `C-e` конец строки357  > - `C-k` вырезать строку (но не помещает её в буфер обмена)358  > - `C-l` центрировать окно вокруг точки вставки359  > - `C-b` переместиться на один символ назад без удаления (обычно для этого также можно использовать клавишу со стрелкой)360  > - `C-f` переместиться на один символ вперёд без удаления (обычно для этого также можно использовать клавишу со стрелкой)361  > - `C-p` подняться на одну строку вверх (обычно для этого также можно использовать клавишу со стрелкой)362  > - `C-d` удалить следующий символ363364Стандартные сочетания клавиш (например, `C-c` для копирования и `C-v` для вставки) могут работать. Сочетания клавиш выбираются в диалоге Configure IDLE.365366### Автоматический отступ367368После оператора, открывающего блок, следующая строка получает отступ в 4 пробела (в окне Python Shell – одна табуляция). После некоторых ключевых слов (break, return и т.д.) отступ следующей строки уменьшается. В начале строки `Backspace` удаляет до 4 пробелов, если они есть. `Tab` вставляет пробелы (в окне Python Shell – одну табуляцию); количество зависит от ширины отступа. В настоящее время из-за ограничений Tcl/Tk табуляция ограничена четырьмя пробелами.369370См. также команды увеличения/уменьшения отступа в [меню «Формат»](https://python-all.ru/3.10/library/idle.html#format-menu).371372### Поиск и замена373374Любое выделение становится объектом поиска. Однако работают только выделения в пределах одной строки, поскольку поиск выполняется только внутри строк (с удалённым символом конца строки). Если `[x] Regular expresion` отмечен, целевая строка интерпретируется в соответствии с модулем Python re.375376### Автодополнение377378Автодополнение предоставляется, по запросу и при наличии, для имён модулей, атрибутов классов или функций, а также имён файлов. Каждый способ запроса отображает окно дополнения с существующими именами. (См. исключение для дополнения по табуляции ниже.) В любом окне можно изменить дополняемое имя и выделенный элемент, вводя и удаляя символы; нажимая клавиши `Up`, `Down`, `PageUp`, `PageDown`, `Home`, `End`; а также одиночным щелчком внутри окна. Закрыть окно можно клавишами `Escape`, `Enter`, двойным нажатием `Tab` или щелчком за пределами окна. Двойной щелчок внутри окна выбирает элемент и закрывает окно.379380Один из способов открыть окно – ввести символ и подождать заданный интервал. По умолчанию он составляет 2 секунды; его можно изменить в диалоге настроек. (Чтобы отключить автоматическое появление окон, установите задержку на большое количество миллисекунд, например 100000000.) Для имён импортированных модулей или атрибутов классов и функций введите ‘.’. Для имён файлов в корневом каталоге введите [`os.sep`](https://python-all.ru/3.10/library/os.html#os.sep) или [`os.altsep`](https://python-all.ru/3.10/library/os.html#os.altsep) сразу после открывающей кавычки. (В Windows можно сначала указать диск.) Для перехода в подкаталоги введите имя каталога и разделитель.381382Вместо ожидания или после закрытия окна можно сразу открыть окно автодополнения с помощью пункта Show Completions в меню Edit. Горячая клавиша по умолчанию – `C-space`. Если перед открытием окна ввести префикс нужного имени, будет показано первое совпадение или наиболее близкий вариант. Результат будет таким же, как если ввести префикс после отображения окна. Пункт Show Completions после кавычки дополняет имена файлов в текущем каталоге, а не в корневом.383384Нажатие `Tab` после префикса обычно даёт тот же эффект, что и «Показать дополнения». (Без префикса выполняется отступ.) Однако, если префиксу соответствует только один вариант, он сразу добавляется в текст редактора без открытия окна.385386Вызов «Показать дополнения» или нажатие `Tab` после префикса вне строки и без предшествующей точки открывает окно с ключевыми словами, встроенными именами и доступными именами на уровне модуля.387388При редактировании кода в редакторе (в отличие от Shell) количество доступных имён на уровне модуля увеличивается, если выполнить код и не перезапускать после этого Shell. Это особенно полезно после добавления импортов в начале файла. Это также увеличивает количество возможных дополнений атрибутов.389390Окна дополнений по умолчанию исключают имена, начинающиеся с «\_», или, для модулей, не включённые в «\_\_all\_\_». Скрытые имена можно получить, введя «\_» после точки до или после открытия окна.391392### Подсказки вызова393394Подсказка вызова отображается автоматически, когда после имени *доступной* функции вводится `(`. Выражение с именем функции может содержать точки и индексы. Подсказка вызова остаётся на экране, пока по ней не щёлкнуть, не переместить курсор за пределы области аргументов или не ввести `)`. Всякий раз, когда курсор находится в части определения, содержащей аргументы, выберите в меню «Правка» пункт «Показать подсказку вызова» или нажмите соответствующее сочетание клавиш, чтобы отобразить подсказку.395396Подсказка вызова состоит из сигнатуры функции и строки документации до первой пустой строки или до пятой непустой строки. (Некоторые встроенные функции не имеют доступной сигнатуры.) Символ «/» или «\*» в сигнатуре указывает, что предшествующие или последующие аргументы передаются только по позиции или по имени (ключевому слову). Подробности могут измениться.397398В окне Shell набор доступных функций зависит от того, какие модули были импортированы в пользовательский процесс (включая те, что импортированы самой IDLE) и какие определения были выполнены с момента последнего перезапуска.399400Например, перезапустите Shell и введите `itertools.count(`. Появится подсказка вызова, так как IDLE импортирует itertools в пользовательский процесс для своих нужд. (Это может измениться.) Введите `turtle.write(` – ничего не появится. IDLE сама не импортирует turtle. Пункт меню и сочетание клавиш также ничего не делают. Введите `import turtle`. После этого `turtle.write(` отобразит подсказку вызова.401402В редакторе операторы импорта не действуют, пока файл не будет запущен. Возможно, потребуется запустить файл после написания операторов импорта, после добавления определений функций или после открытия существующего файла.403404### Контекст кода405406В окне редактора с кодом Python контекст кода можно включить или отключить, чтобы показать или скрыть панель в верхней части окна. При отображении эта панель фиксирует начальные строки блочного кода, например, начинающиеся с ключевых слов `class`, `def` или `if`, которые в противном случае ушли бы за пределы видимости. Размер панели будет расширяться или сжиматься по мере необходимости, чтобы показать все текущие уровни контекста, вплоть до максимального количества строк, заданного в диалоге настройки IDLE (по умолчанию 15). Если текущих строк контекста нет, а функция включена, отображается одна пустая строка. Щелчок по строке на панели контекста перемещает эту строку в верхнюю часть редактора.407408Цвета текста и фона для панели контекста можно настроить на вкладке «Подсветка» в диалоге настройки IDLE.409410### Окно Shell411412В Shell IDLE можно вводить, редактировать и вызывать полные операторы. (Большинство консолей и терминалов работают только с одной физической строкой за раз.)413414Чтобы отправить однострочный оператор на выполнение, нажмите `Return`, когда курсор находится в любом месте строки. Если строка продолжается обратной косой чертой (`\`), курсор должен находиться на последней физической строке. Чтобы отправить многострочный составной оператор, введите пустую строку после оператора.415416При вставке кода в Shell он не компилируется и не выполняется, пока не будет нажата `Return`, как указано выше. Можно сначала отредактировать вставленный код. Если вставить в Shell более одного оператора, результатом будет [`SyntaxError`](https://python-all.ru/3.10/library/exceptions.html#SyntaxError), когда несколько операторов компилируются как один.417418Строки, содержащие `RESTART`, означают, что пользовательский процесс выполнения был перезапущен. Это происходит, когда пользовательский процесс выполнения аварийно завершается, когда запрашивается перезапуск в меню Shell или когда выполняется код в окне редактора.419420Описанные в предыдущих разделах возможности редактирования работают при интерактивном вводе кода. Окно IDLE Shell также реагирует на следующие клавиши.421422- `C-c` прерывает выполняющуюся команду423- `C-d` отправляет конец файла; закрывает окно, если введено в приглашении `>>>`424- `Alt-/` (расширение слова) также полезно для уменьшения объёма ввода425426  История команд427428  - `Alt-p` извлекает предыдущую команду, соответствующую введённому тексту. В macOS используйте `C-p`.429  - `Alt-n` извлекает следующую. В macOS используйте `C-n`.430  - `Return`, когда курсор находится на любой предыдущей команде, извлекает эту команду431432### Цвета текста433434В IDLE по умолчанию используется чёрный текст на белом фоне, но текст окрашивается в зависимости от смысла. Для Shell это вывод Shell, ошибки Shell, вывод пользователя и ошибки пользователя. Для кода Python, в приглашении Shell или в редакторе, это ключевые слова, имена встроенных классов и функций, имена после `class` и `def`, строки и комментарии. Для любого текстового окна это курсор (когда присутствует), найденный текст (когда возможно) и выделенный текст.435436IDLE также подсвечивает [мягкие ключевые слова](https://python-all.ru/3.10/reference/lexical_analysis.html#soft-keywords) [`match`](https://python-all.ru/3.10/reference/compound_stmts.html#match), [`case`](https://python-all.ru/3.10/reference/compound_stmts.html#match) и [`_`](https://python-all.ru/3.10/reference/compound_stmts.html#wildcard-patterns) в операторах сопоставления с образцом. Однако эта подсветка не идеальна и в некоторых редких случаях может быть неверной, включая некоторые `_` в шаблонах `case`.437438Окрашивание текста выполняется в фоновом режиме, поэтому иногда может быть виден неокрашенный текст. Чтобы изменить цветовую схему, используйте вкладку «Подсветка» в диалоге настройки IDLE. Разметка строк точек останова отладчика в редакторе и текст во всплывающих окнах и диалогах не настраивается пользователем.439440## Запуск и выполнение кода441442При запуске с опцией `-s` IDLE выполняет файл, на который ссылаются переменные среды `IDLESTARTUP` или [`PYTHONSTARTUP`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONSTARTUP). IDLE сначала проверяет `IDLESTARTUP`; если `IDLESTARTUP` присутствует, запускается указанный файл. Если `IDLESTARTUP` отсутствует, IDLE проверяет `PYTHONSTARTUP`. Файлы, на которые ссылаются эти переменные среды, удобно использовать для хранения функций, часто используемых из Shell IDLE, или для выполнения операторов импорта общих модулей.443444Кроме того, `Tk` также загружает файл запуска, если он существует. Обратите внимание, что Tk-файл загружается безусловно. Этот дополнительный файл – `.Idle.py`, он ищется в домашнем каталоге пользователя. Операторы в этом файле будут выполняться в пространстве имён Tk, поэтому этот файл не подходит для импорта функций, используемых из Python Shell IDLE.445446### Использование командной строки447448```text449idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...450451-c command  run command in the shell window452-d          enable debugger and open shell window453-e          open editor window454-h          print help message with legal combinations and exit455-i          open shell window456-r file     run file in shell window457-s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window458-t title    set title of shell window459-           run stdin in shell (- must be last option before args)460```461462Если есть аргументы:463464- Если используется `-`, `-c` или `r`, все аргументы помещаются в `sys.argv[1:...]`, а `sys.argv[0]` устанавливается в `''`, `'-c'` или `'-r'`. Окно редактора не открывается, даже если это выбрано по умолчанию в диалоге Options.465- В противном случае аргументы являются файлами, открытыми для редактирования, и `sys.argv` отражает аргументы, переданные самому IDLE.466467### Сбой при запуске468469IDLE использует сокет для взаимодействия между процессом графического интерфейса IDLE и процессом выполнения пользовательского кода. Соединение должно устанавливаться при каждом запуске или перезапуске оболочки. (Последнее обозначается разделительной линией с надписью «RESTART»). Если пользовательский процесс не может подключиться к процессу GUI, обычно отображается диалоговое окно `Tk` с сообщением «cannot connect», которое направляет пользователя сюда. Затем процесс завершается.470471Одна из конкретных причин сбоя соединения в Unix-системах – неверно настроенные правила маскарадинга в сетевых настройках системы. При запуске IDLE из терминала будет видно сообщение, начинающееся с `** Invalid host:`. Допустимое значение – `127.0.0.1 (idlelib.rpc.LOCALHOST)`. Диагностику можно провести с помощью `tcpconnect -irv 127.0.0.1 6543` в одном окне терминала и `tcplisten <same args>` в другом.472473Частая причина сбоя – файл пользователя с тем же именем, что и модуль стандартной библиотеки, например *random.py* и *tkinter.py*. Когда такой файл находится в той же директории, что и файл, который должен быть запущен, IDLE не может импортировать файл из стандартной библиотеки. Текущее решение – переименовать пользовательский файл.474475Хотя и реже, чем в прошлом, антивирус или межсетевой экран могут блокировать соединение. Если программу нельзя научить разрешать соединение, её необходимо отключить для работы IDLE. Разрешать это внутреннее соединение безопасно, поскольку никакие данные не видны на внешних портах. Аналогичная проблема – неверная настройка сети, блокирующая соединения.476477Проблемы с установкой Python иногда мешают работе IDLE: несколько версий могут конфликтовать, или для одной установки могут потребоваться права администратора. Если конфликт не устранён, или невозможно или нежелательно запускать от имени администратора, проще всего полностью удалить Python и начать заново.478479Процесс-зомби pythonw.exe может быть проблемой. В Windows используйте диспетчер задач, чтобы проверить его и остановить, если он есть. Иногда перезапуск, инициированный сбоем программы или прерыванием с клавиатуры (Ctrl+C), может не привести к подключению. Закрытие окна ошибки или использование команды «Перезапустить оболочку» в меню «Оболочка» может исправить временную проблему.480481При первом запуске IDLE пытается прочитать пользовательские файлы конфигурации в `~/.idlerc/` (~ – домашний каталог пользователя). Если возникает проблема, должно отображаться сообщение об ошибке. Не считая случайных сбоев диска, этого можно избежать, никогда не редактируя файлы вручную. Вместо этого используйте диалог настройки в меню Options. Если в пользовательском файле конфигурации уже есть ошибка, лучшее решение – удалить его и начать заново с помощью диалога настроек.482483Если IDLE завершается без сообщения и не был запущен из консоли, попробуйте запустить его из консоли или терминала (`python -m idlelib`) и посмотрите, появится ли сообщение об ошибке.484485В Unix-системах с tcl/tk старше `8.6.11` (см. `About IDLE`) некоторые символы определённых шрифтов могут вызывать сбой tk с сообщением в терминал. Это может произойти как при запуске IDLE для редактирования файла с таким символом, так и при последующем вводе такого символа. Если обновить tcl/tk невозможно, перенастройте IDLE на использование более подходящего шрифта.486487### Выполнение пользовательского кода488489За редкими исключениями, результат выполнения кода Python в IDLE должен быть таким же, как при выполнении того же кода стандартным способом – напрямую с помощью Python в текстовой системной консоли или окне терминала. Однако различия в интерфейсе и работе иногда влияют на видимые результаты. Например, `sys.modules` начинается с большим количеством записей, а `threading.active_count()` возвращает 2 вместо 1.490491По умолчанию IDLE выполняет пользовательский код в отдельном процессе ОС, а не в процессе пользовательского интерфейса, который управляет оболочкой и редактором. В процессе выполнения он заменяет `sys.stdin`, `sys.stdout` и `sys.stderr` объектами, которые получают ввод из окна оболочки и отправляют вывод в него. Исходные значения, хранящиеся в `sys.__stdin__`, `sys.__stdout__` и `sys.__stderr__`, не изменяются, но могут быть `None`.492493Отправка вывода print из одного процесса в виджет текста в другом процессе медленнее, чем печать в системный терминал в том же процессе. Это особенно заметно при выводе нескольких аргументов, так как строка для каждого аргумента, каждый разделитель и символ новой строки отправляются отдельно. Для разработки это обычно не проблема, но если нужно печатать быстрее в IDLE, отформатируйте и объедините всё, что хотите вывести вместе, а затем напечатайте одну строку. Строки форматирования и [`str.join()`](https://python-all.ru/3.10/library/stdtypes.html#str.join) могут помочь объединить поля и строки.494495Стандартные замены потоков IDLE не наследуются подпроцессами, созданными в процессе выполнения, будь то напрямую пользовательским кодом или модулями, такими как multiprocessing. Если такой подпроцесс использует `input` из sys.stdin или `print` или `write` в sys.stdout или sys.stderr, IDLE следует запускать в окне командной строки. (В Windows используйте `python` или `py` вместо `pythonw` или `pyw`.) Вторичный подпроцесс будет затем привязан к этому окну для ввода и вывода.496497Если `sys` сбрасывается пользовательским кодом, например, с помощью `importlib.reload(sys)`, изменения IDLE теряются, и ввод с клавиатуры и вывод на экран будут работать неправильно.498499Когда Shell находится в фокусе, он управляет клавиатурой и экраном. Обычно это незаметно, но функции, которые напрямую обращаются к клавиатуре и экрану, работать не будут. К ним относятся системно-зависимые функции, определяющие, была ли нажата клавиша, и если да, то какая.500501Код IDLE, выполняющийся в процессе выполнения, добавляет в стек вызовов фреймы, которых бы там не было. IDLE оборачивает `sys.getrecursionlimit` и `sys.setrecursionlimit`, чтобы уменьшить влияние дополнительных фреймов стека.502503Когда пользовательский код вызывает SystemExit напрямую или через sys.exit, IDLE возвращается к приглашению Shell, а не завершается.504505### Пользовательский вывод в Shell506507Когда программа выводит текст, результат определяется соответствующим устройством вывода. Когда IDLE выполняет пользовательский код, `sys.stdout` и `sys.stderr` подключены к области отображения Shell IDLE. Некоторые его функции унаследованы от базового виджета Tk Text. Другие являются программными дополнениями. Там, где это важно, Shell спроектирован для разработки, а не для эксплуатации в промышленной среде.508509Например, Shell никогда не отбрасывает вывод. Программа, которая отправляет неограниченный вывод в Shell, в конечном итоге заполнит память, что приведет к ошибке памяти. Напротив, некоторые системные текстовые окна сохраняют только последние n строк вывода. Например, консоль Windows сохраняет настраиваемые пользователем от 1 до 9999 строк, по умолчанию 300.510511Виджет Tk Text, а следовательно и Shell IDLE, отображает символы (кодовые точки) в подмножестве BMP (Basic Multilingual Plane) Unicode. Какие символы отображаются правильным глифом, а какие замещающим прямоугольником, зависит от операционной системы и установленных шрифтов. Символы табуляции заставляют следующий текст начинаться после следующей позиции табуляции. (Они встречаются каждые 8 «символов»). Символы новой строки заставляют следующий текст отображаться на новой строке. Другие управляющие символы игнорируются или отображаются как пробел, прямоугольник или что-то ещё, в зависимости от операционной системы и шрифта. (Перемещение текстового курсора через такой вывод с помощью клавиш со стрелками может проявлять неожиданное поведение в виде пропусков.)512513```python514>>> s = 'a\tb\a<\x02><\r>\bc\nd'  # Введите 22 символа.515>>> len(s)51614517>>> s  # Отобразить repr(s)518'a\tb\x07<\x02><\r>\x08c\nd'519>>> print(s, end='')  # Отобразить s как есть.520# Result varies by OS and font.  Try it.521```522523Функция `repr` используется для интерактивного вывода значений выражений. Она возвращает изменённую версию входной строки, в которой управляющие коды, некоторые кодовые точки BMP и все не-BMP кодовые точки заменяются escape-последовательностями. Как показано выше, это позволяет определить символы в строке независимо от того, как они отображаются.524525Обычный вывод и вывод ошибок, как правило, отделены (на отдельных строках) от ввода кода и друг от друга. Они получают разные цвета подсветки.526527Для трассировок SyntaxError обычная пометка ‘^’ в месте обнаружения ошибки заменяется выделением текста цветом ошибки. Когда код, запущенный из файла, вызывает другие исключения, можно щелкнуть правой кнопкой мыши по строке трассировки, чтобы перейти к соответствующей строке в редакторе IDLE. Файл будет открыт при необходимости.528529В Shell есть специальная возможность сжимать строки вывода до метки «Сжатый текст». Это делается автоматически для вывода, превышающего N строк (по умолчанию N = 50). N можно изменить в разделе PyShell на вкладке General диалога Settings. Вывод с меньшим количеством строк можно сжать, щелкнув по нему правой кнопкой мыши. Это может быть полезно для строк, достаточно длинных, чтобы замедлить прокрутку.530531Сжатый вывод разворачивается на месте двойным щелчком по метке. Его также можно отправить в буфер обмена или отдельное окно просмотра, щелкнув правой кнопкой мыши по метке.532533### Разработка tkinter-приложений534535IDLE намеренно отличается от стандартного 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()`.536537Большинство tkinter-программ запускают `root.mainloop()`, который обычно не возвращает управление, пока tk-приложение не будет уничтожено. Если программа запускается с помощью `python -i` или из редактора IDLE, приглашение `>>>` shell не появляется, пока `mainloop()` не вернётся, после чего уже не с чем взаимодействовать.538539При запуске tkinter-программы из редактора IDLE можно закомментировать вызов mainloop. Тогда сразу появляется приглашение shell, и можно взаимодействовать с работающим приложением. Нужно только не забыть снова включить вызов mainloop при запуске в стандартном Python.540541### Запуск без подпроцесса542543По умолчанию IDLE выполняет пользовательский код в отдельном подпроцессе через сокет, использующий внутренний интерфейс loopback. Это соединение не видно извне, и никакие данные не отправляются и не принимаются из интернета. Если программное обеспечение брандмауэра всё же жалуется, можно игнорировать это.544545Если попытка установить сокетное соединение не удаётся, IDLE уведомит вас. Такие сбои иногда носят временный характер, но если они постоянны, проблема может заключаться либо в блокировке соединения брандмауэром, либо в неправильной конфигурации конкретной системы. Пока проблема не решена, можно запускать IDLE с ключом командной строки -n.546547Если IDLE запущен с ключом командной строки -n, он будет работать в одном процессе и не будет создавать подпроцесс, запускающий RPC-сервер выполнения Python. Это может быть полезно, если Python не может создать подпроцесс или сокетный интерфейс RPC на вашей платформе. Однако в этом режиме пользовательский код не изолирован от самого IDLE. Кроме того, среда не перезапускается при выборе Run/Run Module (F5). Если ваш код был изменён, необходимо выполнить reload() для затронутых модулей и повторно импортировать любые конкретные элементы (например, from foo import baz), чтобы изменения вступили в силу. По этим причинам предпочтительнее запускать IDLE с подпроцессом по умолчанию, если это возможно.548549Устарело с версии 3.4.550551## Справка и настройки552553### Источники справки554555Пункт меню «IDLE Help» отображает форматированную HTML-версию главы об IDLE из справочника по библиотеке. Результат, в окне только для чтения на tkinter, близок к тому, что видно в веб-браузере. Пролистывайте текст с помощью колесика мыши, полосы прокрутки или удерживая клавиши вверх/вниз. Или нажмите кнопку TOC (Table of Contents) и выберите заголовок раздела в открывшемся окне.556557Пункт меню «Python Docs» открывает обширные источники справки, включая руководства, доступные по адресу `docs.python.org/x.y`, где ‘x.y’ – текущая версия Python. Если в вашей системе есть локальная копия документации (это может быть опцией установки), будет открыта она.558559Выбранные URL-адреса можно добавлять или удалять из меню справки в любое время с помощью вкладки General диалога Configure IDLE.560561### Настройка параметров562563Настройки шрифта, подсветки, клавиш и общие настройки можно изменить через Configure IDLE в меню Option. Нестандартные пользовательские настройки сохраняются в каталоге `.idlerc` в домашнем каталоге пользователя. Проблемы, вызванные некорректными конфигурационными файлами пользователя, решаются редактированием или удалением одного или нескольких файлов в `.idlerc`.564565На вкладке Font смотрите образец текста для оценки влияния гарнитуры и размера шрифта на разные символы разных языков. Отредактируйте образец, чтобы добавить другие символы, представляющие личный интерес. Используйте образец для выбора моноширинных шрифтов. Если отдельные символы отображаются с проблемами в Shell или редакторе, добавьте их в начало образца и попробуйте изменить сначала размер, а затем шрифт.566567На вкладке «Подсветка и клавиши» выберите встроенную или пользовательскую цветовую схему и набор клавиш. Чтобы использовать более новую встроенную цветовую схему или набор клавиш в старых версиях IDLE, сохраните её как новую пользовательскую цветовую схему или набор клавиш, и она будет доступна в старых версиях IDLE.568569### IDLE на macOS570571В настройках системы: Dock, можно установить «Prefer tabs when opening documents» в значение «Always». Эта настройка несовместима с графической библиотекой tk/tkinter, используемой в IDLE, и нарушает работу некоторых функций IDLE.572573### Расширения574575IDLE содержит механизм расширений. Настройки расширений можно изменить на вкладке «Extensions» диалога настроек. Обратитесь к началу файла config-extensions.def в каталоге idlelib для получения дополнительной информации. Единственное текущее расширение по умолчанию – zzdummy, пример, также используемый для тестирования.576577## idlelib578579**Исходный код:** [Lib/idlelib](https://python-all.ru/src/3.10/Lib/idlelib)580581---582583Пакет Lib/idlelib реализует приложение IDLE. Остальная часть этой страницы описывает, как использовать IDLE.584585Файлы в idlelib описаны в idlelib/README.txt. Откройте его в idlelib или выберите «Help» ⇒ «About IDLE» в меню IDLE. Этот файл также сопоставляет пункты меню IDLE с кодом, реализующим эти пункты. За исключением файлов, перечисленных в разделе «Startup», код idlelib является «частным» в том смысле, что изменения функциональности могут быть перенесены обратно (см. [**PEP 434**](https://python-all.ru/3.10/library/idle.html)).586