Spec-Zone.ru › Python 3.12

IDLE — редактор и оболочка Python

Исходный код: Lib/idlelib/

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

IDLE обладает следующими возможностями:

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

Меню

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

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

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

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

Новый файл

Создать новое окно редактирования файла.

Открыть…

Открыть существующий файл с помощью диалогового окна «Открыть».

Открыть модуль…

Открыть существующий модуль (выполняется поиск в sys.path).

Последние файлы

Открыть список последних файлов. Щёлкните файл, чтобы открыть его.

Обозреватель модулей

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

Обозреватель путей

Показать каталоги sys.path, модули, функции, классы и методы в виде дерева.

Сохранить

Сохранить текущее окно в связанный с ним файл, если таковой имеется. Перед заголовком и после него отображается символ *, если окно было изменено с момента открытия или последнего сохранения. Если связанного файла нет, вместо этого выполните команду «Сохранить как».

Сохранить как…

Сохранить текущее окно с помощью диалогового окна «Сохранить как». Сохранённый файл становится новым файлом, связанным с окном. (Если в файловом менеджере отключено отображение расширений, текущее расширение не будет показано в поле имени файла. Если в новом имени файла нет символа «.», для файлов Python и текстовых файлов будут добавлены расширения «.py» и «.txt», за исключением macOS Aqua, где «.py» добавляется для всех файлов.)

Сохранить копию как…

Сохранить текущее окно в другой файл, не меняя связанный с ним файл. (См. примечание о расширениях имён файлов выше в описании команды «Сохранить как».)

Печать окна

Распечатать текущее окно на принтере по умолчанию.

Закрыть окно

Закрыть текущее окно (если редактор содержит несохранённые изменения, предложить сохранить их; если в оболочке есть несохранённые изменения, предложить завершить выполнение). Вызов exit() или close() в окне оболочки также закрывает оболочку. Если это единственное окно, IDLE также завершит работу.

Выйти из IDLE

Закрыть все окна и завершить работу IDLE (предложить сохранить несохранённые изменения в окнах редактора).

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

Отменить

Отменить последнее изменение в текущем окне. Можно отменить не более 1000 изменений.

Повторить

Повторить последнее отменённое изменение в текущем окне.

Выделить всё

Выделить всё содержимое текущего окна.

Вырезать

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

Копировать

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

Вставить

Вставить содержимое системного буфера обмена в текущее окно.

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

Найти…

Открыть диалоговое окно поиска с различными параметрами

Найти снова

Повторить последний поиск, если он был.

Найти выделенное

Найти текущую выделенную строку, если она есть.

Найти в файлах…

Открыть диалоговое окно поиска по файлам. Вывести результаты в новом окне вывода.

Заменить…

Открыть диалоговое окно поиска и замены.

Перейти к строке

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

Показать варианты автодополнения

Открыть прокручиваемый список существующих имён для выбора. См. раздел Автодополнение ниже, в подразделе «Редактирование и навигация».

Дополнить слово

Дополнить введённый префикс до полного слова в том же окне; повторный вызов предложит другой вариант.

Показать подсказку вызова

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

Показать парные скобки

Подсветить окружающие скобки.

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

Форматировать абзац

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

Увеличить отступ в области

Сдвинуть выбранные строки вправо на величину отступа (по умолчанию — 4 пробела).

Уменьшить отступ в области

Сдвинуть выбранные строки влево на величину отступа (по умолчанию — 4 пробела).

Закомментировать область

Добавить ## в начало выбранных строк.

Раскомментировать область

Удалить начальные # или ## из выбранных строк.

Заменить пробелы табуляциями в области

Преобразовать начальные последовательности пробелов в символы табуляции. (Примечание: для отступов в коде Python рекомендуется использовать блоки из 4 пробелов.)

Заменить табуляции пробелами в области

Преобразовать все символы табуляции в соответствующее количество пробелов.

Переключить табуляцию

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

Новая ширина отступа

Открыть диалоговое окно для изменения ширины отступа. Принятое в сообществе Python значение по умолчанию — 4 пробела.

Удалить конечные пробелы

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

Меню «Запуск» (только окно редактора)

Запустить модуль

Выполнить команду Проверить модуль. Если ошибок нет, перезапустить оболочку для очистки среды, а затем выполнить модуль. Вывод отображается в окне оболочки. Обратите внимание: для вывода необходимо использовать print или write. После завершения выполнения фокус останется в оболочке и появится приглашение. Теперь результат выполнения можно исследовать в интерактивном режиме. Это похоже на запуск файла с помощью python -i file в командной строке.

Запустить… с настройками

То же, что и Запустить модуль, но модуль запускается с пользовательскими настройками. Аргументы командной строки дополняют sys.argv, как если бы они были переданы в командной строке. Модуль можно запустить в оболочке без перезапуска.

Проверить модуль

Проверить синтаксис модуля, открытого в окне редактора. Если модуль не сохранён, IDLE предложит сохранить его или сохранит автоматически — в зависимости от выбранного параметра на вкладке «Общие» диалогового окна настроек IDLE. При наличии синтаксической ошибки её примерное местоположение будет указано в окне редактора.

Оболочка Python

Открыть окно оболочки Python или вывести его на передний план.

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

Показать последний перезапуск

Прокрутить окно оболочки до последнего перезапуска оболочки.

Перезапустить оболочку

Перезапустить оболочку, чтобы очистить среду и сбросить отображение и обработку исключений.

Предыдущая команда из истории

Перебирать предыдущие команды в истории, соответствующие текущему вводу.

Следующая команда из истории

Перебирать последующие команды в истории, соответствующие текущему вводу.

Прервать выполнение

Остановить выполняющуюся программу.

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

Перейти к файлу/строке

Проверить текущую строку под курсором и строку выше в поисках имени файла и номера строки. Если они найдены, открыть файл, если он ещё не открыт, и показать нужную строку. Используйте эту команду, чтобы просматривать исходные строки, указанные в трассировке исключения, и строки, найденные командой «Найти в файлах». Также доступна в контекстном меню окна оболочки и окон вывода.

Отладчик (переключатель)

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

Просмотр стека

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

Автоматически открывать просмотр стека

Включить или отключить автоматическое открытие средства просмотра стека при необработанном исключении.

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

Настроить IDLE

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

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

Показать/скрыть контекст кода (только окно редактора)

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

Показать/скрыть номера строк (только окно редактора)

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

Развернуть/восстановить высоту

Переключить окно между обычным размером и максимальной высотой. Если значение не изменено на вкладке «Общие» диалогового окна настройки IDLE, размер по умолчанию составляет 40 строк на 80 символов. Максимальная высота окна определяется при его первом разворачивании на экране: для этого окно на мгновение максимизируется. Изменение настроек экрана может привести к тому, что сохранённая высота станет недействительной. Этот переключатель не влияет на максимизированное окно.

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

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

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

О программе IDLE

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

Справка IDLE

Показать этот документ IDLE с описанием пунктов меню, основ редактирования и навигации и других полезных советов.

Документация Python

Открыть локальную документацию Python, если она установлена, или запустить веб-браузер и открыть docs.python.org с последней документацией Python.

Демонстрация Turtle

Запустить модуль turtledemo с примерами кода Python и рисунками черепашки.

Дополнительные источники справки можно добавить здесь с помощью диалогового окна настройки IDLE на вкладке «Общие». Подробнее о пунктах меню «Справка» см. в подразделе Источники справки ниже.

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

Чтобы открыть контекстное меню, щёлкните правой кнопкой мыши в окне (в macOS — щёлкните, удерживая Control). В контекстных меню есть стандартные функции буфера обмена, которые также доступны в меню «Правка».

Вырезать

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

Копировать

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

Вставить

Вставить содержимое системного буфера обмена в текущее окно.

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

Установить точку останова

Установить точку останова в текущей строке.

Удалить точку останова

Удалить точку останова в этой строке.

В окнах оболочки и вывода также доступны следующие команды.

Перейти к файлу/строке

То же, что и в меню «Отладка».

В окне оболочки также есть функция сворачивания вывода, описанная ниже в подразделе Окно оболочки Python.

Свернуть

Если курсор находится на строке вывода, свернуть весь вывод между расположенным выше кодом и расположенным ниже приглашением до метки «Свёрнутый текст».

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

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

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

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

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

Сочетания клавиш

Курсор ввода в IDLE — это тонкая вертикальная черта между позициями символов. При вводе символов курсор ввода и всё, что находится справа от него, перемещается на один символ вправо, а новый символ вставляется на освободившееся место.

Некоторые клавиши, не соответствующие символам, перемещают курсор и могут удалять символы. Удалённый текст не попадает в буфер обмена, но в IDLE есть список действий для отмены. Везде, где в этом документе описаны клавиши, «C» означает клавишу Control в Windows и Unix и клавишу Command в macOS. (Все такие описания предполагают, что сочетания клавиш не были переназначены.)

  • Клавиши со стрелками перемещают курсор на один символ или строку.
  • C-LeftArrow и C-RightArrow перемещают курсор на одно слово влево или вправо.
  • Home и End перемещают курсор в начало или конец строки.
  • Page Up и Page Down перемещают курсор на один экран вверх или вниз.
  • C-Home и C-End перемещают курсор в начало или конец файла.
  • Backspace и Del (или C-d) удаляют предыдущий или следующий символ.
  • C-Backspace и C-Del удаляют одно слово слева или справа.
  • C-k удаляет («вырезает») всё справа.

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

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

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

См. также команды увеличения и уменьшения отступа в области в меню «Формат».

Поиск и замена

Любое выделение становится целью поиска. Однако работают только выделения в пределах одной строки, поскольку поиск выполняется только внутри строк, из которых удалён конечный символ перевода строки. Если установлен флажок [x] Regular expression, цель интерпретируется в соответствии с модулем Python re.

Автодополнение

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

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

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

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

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

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

Изначально окна автодополнения не показывают имена, начинающиеся с «_», а для модулей — имена, не включённые в «__all__». Скрытые имена можно получить, введя «_» после «.», до или после открытия окна.

Подсказки вызовов

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

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

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

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

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

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

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

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

Окно оболочки

В оболочке IDLE можно вводить, редактировать и вызывать ранее введённые инструкции целиком. (Большинство консолей и терминалов работают только с одной физической строкой за раз.)

Чтобы выполнить однострочную инструкцию, нажмите Return, когда курсор находится в любой позиции строки. Если строка продолжается символом обратной косой черты (\), курсор должен находиться в последней физической строке. Чтобы выполнить составную инструкцию из нескольких строк, после неё введите пустую строку.

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

Строки с RESTART означают, что пользовательский процесс выполнения был перезапущен. Это происходит, если пользовательский процесс выполнения аварийно завершился, если выбран перезапуск в меню «Оболочка» или если запущен код в окне редактора.

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

  • C-c пытается прервать выполнение инструкции (но это может не сработать).
  • C-d закрывает оболочку, если нажата в приглашении >>>.
  • Alt-p и Alt-n (в macOS — C-p и C-n) подставляют в текущее приглашение предыдущую или следующую из введённых ранее инструкций, соответствующую уже набранному тексту.
  • Return, нажатая, когда курсор находится на любой из предыдущих инструкций, добавляет эту инструкцию к уже введённому в приглашении тексту.

Цвета текста

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

IDLE также подсвечивает мягкие ключевые слова match, case и _ в инструкциях сопоставления с образцом. Однако эта подсветка не идеальна и в некоторых редких случаях может быть неверной, в том числе для некоторых _-ов в шаблонах case.

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

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

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

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

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

IDLE можно запускать из командной строки с различными параметрами. Общий синтаксис:

python -m idlelib [options] [file ...]

Доступны следующие параметры:

-c <command>

Выполнить указанную команду Python в окне оболочки. Например, передайте -c "print('Hello, World!')". В Windows внешние кавычки должны быть двойными, как показано.

-d

Включить отладчик и открыть окно оболочки.

-e

Открыть окно редактора.

-h

Вывести справочное сообщение с допустимыми сочетаниями параметров и завершить работу.

-i

Открыть окно оболочки.

-r <file>

Выполнить указанный файл в окне оболочки.

-s

Выполнить файл запуска (определённый переменными среды IDLESTARTUP или PYTHONSTARTUP) перед открытием окна оболочки.

-t <title>

Задать заголовок окна оболочки.

-

Прочитать стандартный ввод и выполнить его в окне оболочки. Этот параметр должен быть последним перед любыми аргументами.

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

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

Сбой при запуске

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

Одна из конкретных причин сбоя подключения в Unix-системах — неправильно настроенные правила маскарадинга в сетевых настройках системы. При запуске IDLE из терминала можно увидеть сообщение, начинающееся с ** Invalid host:. Допустимое значение — 127.0.0.1 (idlelib.rpc.LOCALHOST). Диагностировать проблему можно с помощью tcpconnect -irv 127.0.0.1 6543 в одном окне терминала и tcplisten <same args> в другом.

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

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

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

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

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

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

В Unix-подобных системах с tcl/tk версии ниже 8.6.11 (см. About IDLE) некоторые символы в определённых шрифтах могут вызвать сбой tk с сообщением в терминале. Это может произойти при запуске IDLE для редактирования файла с таким символом или позднее, при вводе этого символа. Если обновить tcl/tk нельзя, перенастройте IDLE на использование более подходящего шрифта.

Выполнение пользовательского кода

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

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

Передавать вывод print из одного процесса в текстовый виджет другого медленнее, чем печатать в системный терминал в том же процессе. Особенно это заметно при печати нескольких аргументов, поскольку строка каждого аргумента, каждый разделитель и символ новой строки отправляются отдельно. При разработке это обычно не проблема, но если нужно ускорить печать в IDLE, отформатируйте и объедините всё, что требуется вывести, а затем напечатайте одну строку. Для объединения полей и строк могут помочь как форматные строки, так и str.join().

Стандартные замены потоков в IDLE не наследуются дочерними процессами, созданными в процессе выполнения, независимо от того, созданы они непосредственно пользовательским кодом или такими модулями, как multiprocessing. Если такие дочерние процессы используют input из sys.stdin или print либо write для sys.stdout или sys.stderr, IDLE следует запускать в окне командной строки. (В Windows используйте python или py вместо pythonw или pyw.) Тогда дополнительный дочерний процесс будет подключён к этому окну для ввода и вывода.

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

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

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

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

Вывод пользовательского кода в оболочке

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

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

Текстовый виджет Tk, а значит и оболочка IDLE, отображает символы (кодовые точки) из подмножества BMP (основной многоязычной плоскости) Unicode. От операционной системы и установленных шрифтов зависит, какие символы отображаются правильными глифами, а какие — заменяющими прямоугольниками. Символы табуляции перемещают следующий текст к следующей позиции табуляции. (Такие позиции располагаются через каждые 8 «символов».) Символы новой строки переносят последующий текст на новую строку. Другие управляющие символы игнорируются или отображаются как пробел, прямоугольник либо иначе — в зависимости от операционной системы и шрифта. (Перемещение текстового курсора по такому выводу клавишами со стрелками может приводить к неожиданному поведению интервалов.)

>>> s = 'a\tb\a<\x02><\r>\bc\nd'  # Enter 22 chars.
>>> len(s)
14
>>> s  # Display repr(s)
'a\tb\x07<\x02><\r>\x08c\nd'
>>> print(s, end='')  # Display s as is.
# Result varies by OS and font.  Try it.

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

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

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

В оболочке есть специальная функция сворачивания строк вывода в метку «Сжатый текст». Она срабатывает автоматически для вывода, превышающего 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 выполняет пользовательский код в отдельном дочернем процессе через сокет, использующий внутренний интерфейс обратной петли. Это подключение не видно извне, и данные не отправляются в интернет и не принимаются из него. Если программное обеспечение брандмауэра всё же выдаёт предупреждение, его можно проигнорировать.

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

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

Устарело с версии 3.4.

Справка и настройки

Источники справки

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

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

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

Настройка параметров

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

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

На вкладке 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; это пример, который также используется для тестирования.

idlelib — реализация приложения IDLE

Исходный код: Lib/idlelib

Пакет Lib/idlelib реализует приложение IDLE. Инструкции по использованию IDLE приведены в остальных разделах этой страницы.

Описание файлов в idlelib находится в idlelib/README.txt. Откройте его в каталоге idlelib или выберите «Справка» => «О программе IDLE» в меню IDLE. В этом файле также указано, какие пункты меню IDLE соответствуют реализующему их коду. За исключением файлов, перечисленных в разделе «Startup», код idlelib является «внутренним» в том смысле, что изменения функций можно перенести в предыдущие версии (см. PEP 434).

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/idle.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API