Spec-Zone.ru › Python 3.11

IDLE

Исходный код: 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 откройте диалоговое окно настроек, выбрав пункт «Настройки» в меню приложения. Дополнительные сведения см. в разделе Настройка параметров в подразделе «Справка и настройки».

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

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

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

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

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

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

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

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

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

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

О программе 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 (C-p и C-n в macOS) извлекают в текущее приглашение предыдущую или следующую ранее введённую инструкцию, соответствующую уже введённому тексту.
  • 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.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...

-c command  run command in the shell window
-d          enable debugger and open shell window
-e          open editor window
-h          print help message with legal combinations and exit
-i          open shell window
-r file     run file in shell window
-s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window
-t title    set title of shell window
-           run stdin in shell (- must be last option before args)

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

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

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

IDLE использует сокет для связи между процессом графического интерфейса IDLE и процессом выполнения пользовательского кода. Подключение должно устанавливаться при каждом запуске или перезапуске оболочки. (О перезапуске сообщает разделительная линия с надписью «ПЕРЕЗАПУСК».) Если пользовательский процесс не может подключиться к процессу графического интерфейса, обычно появляется окно ошибки 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 (основной многоязычной плоскости) Юникода. То, какие символы отображаются правильными глифами, а какие — заменяющими прямоугольниками, зависит от операционной системы и установленных шрифтов. Символы табуляции заставляют следующий текст начинаться после ближайшей позиции табуляции. (Такие позиции встречаются через каждые 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 на странице «Общие» диалогового окна настроек. Вывод из меньшего числа строк можно свернуть, щёлкнув по нему правой кнопкой мыши. Это может быть полезно для длинных строк, замедляющих прокрутку.

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

Разработка приложений 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. Кроме того, среда не перезапускается при выборе команды Run/Run Module (F5). Если ваш код был изменён, необходимо выполнить reload() для затронутых модулей и повторно импортировать отдельные элементы (например, from foo import baz), чтобы изменения вступили в силу. Поэтому по возможности предпочтительнее запускать IDLE с дочерним процессом, используемым по умолчанию.

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

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

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

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

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

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

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

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

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

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

IDLE в macOS

В разделе «Системные настройки» → «Dock» можно установить для параметра «Предпочитать вкладки при открытии документов» значение «Всегда». Эта настройка несовместима с графической платформой tk/tkinter, используемой IDLE, и нарушает работу некоторых его функций.

Расширения

В IDLE предусмотрена поддержка расширений. Параметры расширений можно изменить на вкладке «Расширения» диалогового окна настройки. Дополнительные сведения см. в начале файла config-extensions.def в каталоге idlelib. Единственное стандартное расширение на данный момент — zzdummy; это пример, который также используется для тестирования.

idlelib

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

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

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

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

Spec-Zone.ru

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