Как сделать локализацию python
Чтобы начать играть с Python, нам нужно открыть командную строку на твоём компьютере. Ты уже должна знать, как это сделать — мы изучали это в главе Введение в интерфейс командной строки.
Когда будешь готова, следуй приведенным ниже инструкциям.
Мы хотим открыть консоль Python, так что набери python , если работаешь в Windows, или python3 для Mac OS/Linux, и нажми enter .
Твоя первая команда Python!
После запуска Python командная строка изменилась на >>> . Для нас это означает, что сейчас мы можем использовать только команды на языке Python. Тебе не нужно вводить >>> — Python будет делать это за нас.
Если ты хочешь выйти из консоли Python, в любой момент — просто введи exit() или используй сочетание клавиш Ctrl + Z для Windows и Ctrl + D для Mac/Linux. Тогда ты больше не будешь видеть >>> .
Пока что мы не хотим выходить из консоли Python. Мы хотим узнать больше о ней. Давай начнём с чего-нибудь совсем простого. Например, попробуй набрать простое математическое выражение, вроде 2 + 3 , и нажми enter .
Прекрасно! Видишь, как выскочил ответ? Python знает математику! Ты можешь попробовать другие команды, например:
Чтобы вычислить степень числа, например, 2 в кубе, мы вводим:
Поиграй с этим немного и затем вернись сюда :).
Как видишь, Python является прекрасным калькулятором. Если тебе интересно, что ещё можно сделать.
Строки
Как насчет твоего имени? Введи своё имя в кавычках, вот так:
Ты только что создала свою первую строку! Это последовательность символов, которые могут быть обработаны компьютером. Строка должна всегда начинаться и заканчиваться одинаковым символом. Им может быть одинарная ( ' ) или двойная ( " ) кавычка (разницы нет!) Кавычки говорят Python'у, что внутри них находится строка.
Строки могут быть слиты воедино. Попробуй так:
Ты также можешь умножать строки на число:
Если тебе нужно поставить апостроф внутри строки, то есть два способа сделать это.
Используй двойные кавычки:
или поставь перед апострофом обратную косую черту ( \ ):
Прикольно, да? Чтобы увидеть своё имя прописными буквами, просто набери:
Ты только что использовала метод upper своей строки! Метод (такой как upper() ) представляет собой набор инструкций, который должен выполнить Python над заданным объектом (в нашем случае: "Ola" ) при его вызове.
Если ты хочешь узнать количество букв в своём имени, то и для этого тоже существует функция!
Интересно, почему иногда мы вызываем функцию добавлением . к концу строки (как "Ola".upper() ), а иногда сначала пишем имя функции и затем помещаем строку в скобки? Ну, в некоторых случаях функции принадлежат объектам, например, функция upper() , которая может быть применена только к строкам. В этом случае мы называем функцию методом. В другом случае функции не относятся к чему-то конкретному и могут использоваться для различных типов объектов, например, функция len() . Вот почему мы передаем "Ola" в качестве параметра функции len .
Подведём итог
Хорошо, достаточно о строках. Пока ты узнала следующее:
- командная строка — ввод команд (кода) в интерактивную командную строку Python приводит к ответам на Python;
- числа и строки — в Python числа используются для вычислений, а строки - для текстовых объектов;
- операторы, такие как + и *, объединяют значения для получения нового;
- функции, такие как upper() и len(), выполняют действия над объектами.
Таковы основы каждого языка программирования, который ты можешь выучить. Готова к чему-то посложнее? Мы уверены, что готова!
Ошибки
Давай попробуем кое-что новенькое. Можем ли мы получить длину числа так же, как длину твоего имени? Введи len(304023) и нажми Enter :
Мы получили нашу первую ошибку! Иконкой мы будем обозначать код, который при запуске сработает не так, как ожидается. Совершение ошибок (даже преднамеренных) -- важная часть обучения!
Сработало! Мы использовали функцию str внутри функции len . str() преобразует всё в строки.
- Функция str преобразует объекты в строки
- Функция int преобразует объекты в целые числа
Важно: мы можем преобразовать число в текст, но не всегда удается преобразовать текст в числа — например, каков будет результат int('hello') ?
Переменные
Переменные — важное понятие в программировании. Переменная — это всего лишь имя для чего-то, чтобы использовать его позднее. Программисты используют переменные для хранения данных, чтобы их код был более читабельным, и для того, чтобы им не пришлось запоминать, что есть что.
Допустим, мы хотим создать новую переменную с именем name :
Видишь? Это очень легко! Просто введи: name равно Ola.
Как ты уже заметила, твоя программа не возвращает ничего, как было ранее. Так откуда мы знаем, что переменная действительно существует? Просто введи name и нажми Enter :
Ура! Твоя первая переменная:)! Ты всегда можешь изменить то, к чему она относится:
Ты также можешь использовать переменные и в функциях:
Круто, правда? Переменными, конечно, может быть что угодно, и цифры тоже! Попробуй следующее:
Но что делать, если мы использовали неправильное имя? Можешь догадаться, что произойдет? Давай попробуем!
Ошибка! Как ты можешь видеть, в Python есть различные типы ошибок, эта называется NameError. Python выдаст эту ошибку при попытке использовать переменную, которая пока не определена. При возникновении этой ошибки проверь свой код, чтобы узнать, не написала ли ты неправильно имя переменной.
Попрактикуйся в этом какое-то время и посмотри, что ты сможешь сделать!
Функция print
Если просто ввести name , интерпретатор Python вернет строковое представление переменной 'name', которым, в нашем случае, являются буквы M-a-r-i-a, окруженные одинарными кавычками, ''. Когда ты вводишь print(name) , Python "печатает" содержание переменной на экран, без кавычек, что удобнее.
Как мы увидим позднее, print() пригодится, когда нам будет нужно печатать что-то изнутри функций или когда мы захотим напечатать что-то на нескольких строчках.
Списки
Помимо строк и целых чисел Python имеет богатую коллекцию других типов объектов. Сейчас мы собираемся представить тебе один из них — list (список). Списки — это именно то, о чём ты подумала: объекты, которые являются списками других объектов :)
Давай начнем с создания списка:
Отлично, это пустой список. Не особенно полезен, да? Давай создадим список лотерейных номеров. Мы не хотим повторять их каждый раз, так что присвоим список переменной:
Замечательно, у нас есть список! Что мы можем с ним сделать? Для начала посмотрим, как много лотерейных номеров в нашем списке. Есть идеи, какую функцию можно использовать для этого? Ты её уже знаешь!
Точно! len() вернет тебе количество объектов в списке. Удобно, правда? Пожалуй, мы теперь отсортируем его:
Эта команда не возвращает ничего, она просто меняет порядок номеров в списке. Давайте выведем его на экран и посмотрим, что получилось:
Как видишь, номера в списке теперь отсортированы от меньшего к большему. Поздравляем!
Может, нам нужно обратить порядок? Давай сделаем это!
Просто, правда? Если хочешь добавить что-то к своему списку, то можешь воспользоваться этой командой:
Если ты хочешь получить только первый номер в списке, то можешь воспользоваться индексами. Индекс — это номер позиции в списке, на котором находится нужное нам значение. Программисты предпочитают начать считать с 0, так что первому объекту в списке соответствует индекс 0, следующему —1, и так далее. Попробуй ввести:
Как видишь, ты можешь обратиться к различным объектам в своем списке, используя имя списка и индекс объекта в квадратных скобках.
Чтобы удалить что-либо из списка, тебе понадобятся индексы, с которыми мы уже разобрались выше, и команда pop() . Давай попробуем закрепить пройденное на примере: мы будем удалять первый элемент из нашего списка.
Сработало как по маслу!
В качестве дополнительной тренировки попробуй следующие индексы: 6, 7, 1000, -1, -6 и -1000. Можешь предсказать результат? Видишь логику работы?
Словари
Для проходящих руководство дома: этот раздел рассмотрен в видео Python Basics: Dictionaries.
Словари схожи со списками, но ты обращаешься к значениям словаря по ключу, а не по индексу. Ключом может быть любая строка или число. Давай создадим пустой словарь:
Это показывает, что мы создали пустой словарь. Ура!
Теперь попробуй следующую команду (можешь заменить значения на своё имя, страну и т.д.):
Этой командой ты создала переменную participant с тремя парами ключ/значение:
- ключ name , указывающий на значение 'Ola' (объект типа строка ),
- ключ country , указывающий на значение 'Poland' (еще одна строка ),
- и ключ favorite_numbers , указывающий на значение [7, 42, 92] (объект типа список с тремя числами внутри).
Значение конкретного ключа можно узнать следующим образом:
Видишь, синтаксис похож на работу со списком. Но вместо того, чтобы запоминать индекс, тебе нужно помнить ключ.
Что случится, если мы спросим у Python значение несуществующего в словаре ключа? Можешь предположить? Давай попробуем и узнаем наверняка!
Смотри, другая ошибка! Эта называется KeyError. Python услужливо напоминает, что ключа 'age' нет в словаре.
Когда стоит использовать словарь, а когда список? Это хороший вопрос для самостоятельного размышления. Сделай предположение перед тем, как читать дальше.
- Тебе нужна упорядоченная последовательность элементов? Список — наш выбор.
- Тебе нужны сочетания ключ/значение, чтобы быстро искать значения (по ключу) в дальнейшем? Словарь отлично подойдет.
Словари, как и списки, изменяемы, т. е. они могут быть изменены после того, как были созданы. Ты можешь добавить новые пары ключ/значение в словарь следующим образом:
Так же как в примере со списками, использование функции len() вернёт число пар ключ/значение в словаре. Попробуй сама:
Надеюсь, всё вышеизложенное понятно. :) Готова к новым приключениям со словарями? На следующей строке тебя ждут изумительные вещи.
Ты можешь использовать команду pop() для удаления элементов из словаря. Скажем, ты хочешь удалить элемент с ключом 'favorite_numbers' . Просто набери следующую команду:
Как видишь, пара ключ/значение с ключом 'favorite_numbers' была удалена.
Помимо этого, ты можешь заменить значение, связанное с уже существующим ключом. Набери:
Значение, на которое ссылается ключ 'country' , изменилось с 'Poland' на 'Germany' . :) Захватывает? Ещё бы! Ты выучила еще одну потрясающую штуку!
Подведём итог
Шикарно! Теперь ты знаешь немало о программировании. Мы познакомились с:
- ошибками — теперь ты знаешь как читать и анализировать ошибки, которые возникают, если Python не понимает твоей команды;
- переменными — именами для объектов, которые упрощают твой код и делают его более читабельным;
- списками — последовательностями объектов в заданном порядке;
- словарями — объектами, хранящими пары ключ/значение.
Готова к продолжению? :)
Сравнения
Для проходящих руководство дома: этот раздел рассмотрен в видео Python Basics: Comparisons.
В программировании часто надо что-то сравнивать. Что проще всего сравнить друг с другом? Числа, конечно. Давай посмотрим, как это работает:
Мы передали Python несколько чисел для сравнения. Как ты можешь заметить, Python сравнивает не только числа, но и результаты методов (например, умножения). Неплохо, правда?
Хочешь спросить, почему мы написали двойной символ равенства == , чтобы проверить, одинаковы ли числа? Потому что одинарные символ равенства = уже задействован под присваивание значения переменным. Ты всегда, всегда должна писать два символа равенства == , если хочешь проверить, одинаковы ли объекты. Мы также можем проверить, различаются ли объекты. Для этого мы используем != , как показано в примере выше.
Дадим Python еще два задания:
С > и все понятно, но что значат >= и ? Читай их следующим образом:
- x > y означает: x больше y
- x y означает: x меньше y
- x y означает: x меньше или равен y
- x >= y означает: x больше или равен y
Супер! Хочешь еще? Тогда попробуй вот это:
Ты можешь передать Python столько чисел, сколько захочешь, и он будет возвращать ответ! Хитро, правда?
- and — если ты используешь оператор and , оба сравнения по обе стороны от него должны быть True (верны), чтобы результат всей команды был равен True.
- or — если ты используешь оператор or , достаточно одному из сравнений по обе стороны от него быть равным True, чтобы результат всей команды также равнялся True.
Ты когда-нибудь слышала выражение "сравнивать тёплое с мягким"? Попробуем сделать что-то подобное в Python:
Как мы видим, Python не знает, как сравнить число ( int ) и строку ( str ) между собой. Поэтому он просто возвращает нам ошибку TypeError и предупреждает, что объекты заданных типов не могут быть сравнены.
Логические значения
Между прочим, ты только что познакомилась с новым типом объектов в Python. Он называется Boolean (логический) — и это, наверное, самый простой тип из всех.
Существует только два логических объекта в Python:
Чтобы Python понимал тебя, ты всегда должна писать True с заглавной буквы (остальные прописные). true, TRUE, tRUE не будут восприниматься — только True. (Та же логика применима к False, само собой.)
Ты можешь присваивать переменным логические значения! Смотри сюда:
Попрактикуйся с логическими значениями на примере этих выражений:
- True and True
- False and True
- True or 1 == 1
- 1 != 2
Поздравляем! Логические значения — одна из самых классных фишек программирования, и ты только что научилась ими пользоваться!
До сих пор мы писали весь код в интерактивной консоли, где Python сразу анализировал, обрабатывал и выполнял наши команды. Мы были ограничены одной строкой. Обычно, программы сохраняются в файлах и выполняются интерпретатором или компилятором нашего языка программирования. Пока мы только просили интерпретатор Python выполнять наши однострочные команды из консоли. Однако нам понадобится больше места для следующих задач, поэтому задача минимум:
- закрыть интерактивную консоль Python;
- открыть наш текстовый редактор;
- сохранить код в новом файле;
- запустить его!
Чтобы закрыть интерактивную консоль Python, просто набери функцию exit() :
Это вернёт тебя в командную строку.
В главе Текстовый редактор мы выбрали себе редактор. Нам нужно открыть его сейчас и записать следующий код в новый файл (или, если ты используешь Chromebook, создай новый файл в облачной IDE и открой файл, который будет во встроенном редакторе кода):
Очевидно, ты уже искушенный Python разработчик, так что не стесняйся добавить что-нибудь по своему вкусу из ранее изученного.
Теперь нам нужно сохранить файл с кодом и дать ему подходящее имя. Давай назовем его python_intro.py и сохраним на рабочий стол. Мы можем назвать файл как хотим, но важно, чтобы название заканчивалось на .py. Расширение .py говорит операционной системе, что это исполняемый файл python, и Python может его запустить.
После сохранения файла пришло время запустить его! Используя навыки из раздела о командной строке, открой терминал и поменяй текущую директорию на рабочий стол.
Недавно открыл для себя шикарный пакет, который помогает строить ссылки для сайте по ГОСТу, из транслитерации получить нормальный текст, определять к какому языку относится текст.
Давайте установим пакет в свое окружение. Для этого откроем консоль|терминал и введем команду:
pip install transliterate
Пакет установлен, начинаем заполнять скрипт командами.
Начнем с импорта пакета и команды вывода поддерживаемых локалей:
На июнь 2021 года в пакете есть поддержка следующих локалей:
- Armenian
- Bulgarian (beta)
- Georgian
- Greek
- Macedonian (alpha)
- Mongolian (alpha)
- Russian
- Serbian (alpha)
- Ukrainian (beta)
Что даёт поддержка локалей?
Модуль transliterate имеет ряд полезных инструментов, таких как:
Формирование транслитерации
Кто не знает что такое транслитерация - wiki помогает:
точная передача знаков одной письменности знаками другой письменности, при которой каждый знак (или последовательность знаков) одной системы письма передаётся соответствующим знаком (или последовательностью знаков) другой системы письма.
Транслитерация текста с русского языка на английский , т .е. замена всех русских букв в строке на английские буквы.
В этом пособии с соответствующими примерами кода рассказываем о том, как написать при помощи Python свой язык программирования и компилятор к нему.
Изучение компиляторов и устройства языков программирования по видеоурокам и руководствам – дело для новичков тяжелое. В этих материалах нередко отсутствуют важные составляющие. Цель публикации – помочь людям, ищущим способ создать свой язык программирования и компилятор. Пример игрушечный, но позволит понять, с чего начать и в каком направлении двигаться.
Если вы незнакомы с нижеприведенными понятиями, не беспокойтесь – мы проясним необходимость этих компонентов далее, по ходу создания компилятора. В качестве лексера и парсера используется PLY. В роли низкоуровневого языка-посредника для генерации оптимизированного кода выступает LLVMlite.
Таким образом, к системе предъявляются следующие требования:
- Среда Anaconda (более простой способ для инсталляции LLVMlite – conda, а не классический pip)
- LLVMlite
- RPLY (то же, что PLY, но с более хорошим API)
-
(статический компилятор LLVM)
Начнем с того, что назовем свой язык программирования. В качестве примера он будет называться TOY. Пусть пример программы на языке TOY выглядит следующим образом:
Любой язык программирования включает множество составляющих его компонентов. Чтобы не застрять в мелочах, возьмем в качестве микропрограммы вызов одной функции нашего языка:
Как для этой однострочной программы формально описать грамматику языка? Чтобы это сделать, необходимо использовать расширенную Бэкус – Наурову форму (РБНФ) (англ. Extended Backus–Naur Form ( EBNF )). Это формальная система определения синтаксиса языка. Воплощается она при помощи метаязыка, определяющего в одном документе всевозможные грамматические конструкции. Чтобы в деталях разобраться с тем, как работает РБНФ, прочтите эту публикацию.
Создадим РБНФ, которая опишет минимальный функционал нашей микропрограммы. Начнем с операции суммирования:
Соответствующая РБНФ будет выглядеть следующим образом:
Дополним язык операцией вычитания:
В соответствующем РБНФ изменится первая строка:
Наконец, опишем функцию print:
В этом случае в РБНФ появится новая строка, описывающая работу с выражениями:
В таком ключе развивается описание грамматики языка. Как же научить компьютер транслироваться эту грамматику в бинарный исполняемый код? Для этого нужен компилятор.
Компилятор – это программа, переводящая текст ЯП на машинный или другие языки. Программы на TOY в этом руководстве будут компилироваться в промежуточное представление LLVM IR (IR – сокращение от Intermediate Representation) и затем в машинный язык.
Использование LLVM позволяет оптимизировать процесс компиляции без изучения самого процесса оптимизации. У LLVM действительно хорошая библиотека для работы с компиляторами.
Наш компилятор можно разделить на три составляющие:
- лексический анализатор (лексер, англ. lexer)
- синтаксический анализатор (парсер, англ. parser)
- генератор кода
Для лексического анализатора и парсера мы будем использовать RPLY, очень близкий к PLY. Это библиотека Python с теми же лексическими и парсинговыми инструментами, но с более качественным API. Для генератора кода будем использовать LLVMLite – библиотеку Python для связывания компонентов LLVM.
1. Лексический анализатор
Итак, первый компонент компилятора – лексический анализатор. Роль этого компонента заключается в том, чтобы разделять текст программы на токены.
Воспользуемся последней структурой из примера для РБНФ и найдем токены. Рассмотрим команду:
Наш лексический анализатор должен разделить эту строку на следующий список токенов:
Напишем код компилятора. Для начала создадим файл lexer.py, в программном коде которого будут определяться токены. Для создания лексического анализатора воспользуемся классом LexerGenerator библиотеки RPLY.
Создадим основной файл программы main.py. В этом файле мы впоследствии объединим функционал трех компонентов компилятора. Для начала импортируем созданный нами класс Lexer и определим токены для нашей однострочной программы:
При запуске main.py мы увидим на выходе вышеописанные токены. Вы можете изменить названия своих токенов, но для простоты согласования с функциями парсера их лучше оставить как есть.
2. Синтаксический анализатор
Второй компонент компилятора – синтаксический анализатор (он же парсер). Его роль – синтаксический анализ текста программы. Данный компонент принимает список токенов на входе и создает на выходе абстрактное синтаксическое дерево (АСД). Эта концепция более трудна, чем идея списка токенов, поэтому мы настоятельно рекомендуем хотя бы по приведенным выше ссылкам изучить принципы работы парсеров и синтаксических деревьев.
Чтобы воплотить в жизнь синтаксический анализатор, будем использовать структуру, созданную на этапе РБНФ. К счастью, анализатор RPLY использует формат, схожий с РБНФ. Самое сложное – присоединить синтаксический анализатор к АСД, но когда вы поймете идею, это действие станет действительно механическим.
Во-первых, создадим файл ast.py. Он будет содержать все классы, которые могут быть вызваны парсером, и создавать АСД.
Во-вторых, нам необходимо создать сам анализатор. Для этого в новом файле parser.py аналогично лексеру используем класс ParserGenerator из библиотеки RPLY:
Наконец, обновляем файл main.py, чтобы объединить возможности синтаксического и лексического анализаторов:
Теперь при запуске main.py мы получим значение 6. и оно действительно соответствует нашей однострочной программе "print(4 + 4 – 2);".
Таким образом, при помощи двух этих компонентов мы создали работающий компилятор, интерпретирующий язык TOY. Однако компилятор по-прежнему не создает исполняемый машинный код и не оптимизирован. Для этого мы перейдем к самой сложной части руководства – генерации кода с помощью LLVM.
3. Генератор кода
Третья и последняя часть компилятора – это генератор кода. Его роль заключается в том, чтобы преобразовывать АСД в машинный код или промежуточное представление. В нашем случае будет происходить преобразование АСД в промежуточное представление LLVM (LLVM IR).
LLVM может оказаться действительно сложным для понимания инструментом, поэтому обратите внимание на документацию LLVMlite. LLVMlite не имеет реализации для функции печати, поэтому вы должны определить собственную функцию.
Чтобы начать, создадим файл codegen.py, содержащий класс CodeGen. Этот класс отвечает за настройку LLVM и создание/сохранение IR-кода. В нем мы также объявим функцию печати.
Теперь обновим основной файл main.py, чтобы вызывать методы CodeGen:
Как вы можете видеть, для того, чтобы обработка происходила классическим образом, входная программа была вынесена в отдельный файл input.toy. Это уже больше похоже на классический компилятор. Файл input.toy содержит все ту же однострочную программу:
Наконец, самое важное. Мы должны изменить файл ast.py, чтобы получать эти объекты и создавать LLMV АСД, используя методы из библиотеки LLVMlite:
После изменений компилятор готов к преобразованию программы на языке TOY в файл промежуточного представления LLVM output.ll. Далее используем LLC для создания файла объекта output.o и GCC для получения конечного исполняемого файла:
Теперь вы можете запустить исполняем файл, для создания которого вами использовался свой язык программирования:
Мы надеемся, что после прохождения этого руководства вы разобрались в общих чертах в концепции РБНФ и трех основных составляющих компилятора. Благодаря этим знаниям вы можете создать свой язык программирования и написать оптимизированный компилятор при помощи Python. Мы призываем вас не останавливаться на достигнутом и добавить в свой язык и компилятор другие важные составляющие:
Среда разработки IDLE Shell достаточно проста, если сравнивать с другими средствами разработки, такими как Delphi или Visual Studio, или со средствами разработки на Python от сторонних разработчиков. Однако и её тоже не помешает настроить под свои предпочтения.
Основные настройки можно оставить со значениями по умолчанию. Настроить под себя для начала следует, разве что, подсветку синтаксиса и параметры шрифта.
Настройки IDLE выполняются в окне настроек, которое вызывается через меню
OPTIONS - CONFIGURE IDLE
Окно настроек содержит пять вкладок (страниц):
Рис. 1-3-1. Окно настроек IDLE: вкладка ШРИФТЫ И ТАБУЛЯЦИЯ
Шрифты и табуляция
На первой вкладке FONTS/TABS (шрифты/табуляция) можно выбрать шрифт и установить размер табуляции.
Для исходных кодов лучше выбирать моноширинный шрифт (шрифт с одинаковой шириной всех символов). Я предпочитаю Courier New.
Ниже (под списком шрифтов) можно выбрать размер шрифта, а также сделать его жирным.
Справа предварительный просмотр выбранного шрифта.
Также вы можете установить размер табуляции (то есть на какое количество пробелов будет перемещаться курсор при нажатии на клавишу ТАВ). Значение по умолчанию равно 4. Но я всегда ставлю 2, чтобы код не расползался в ширину при наличии множества вложенных блоков.
Подсветка синтаксиса
Я работаю в разных средах разработки с разными языками. И практически в каждой среде разработки свои предпочтения по цвету ключевых слов, строк, цифр и т.п. Но мне не нравится, когда подсветка синтаксиса отличается от привычной. Поэтому, когда я устанавливаю какую-то новую IDE, то я первым делом настраиваю цвета текста в редакторе исходного кода.
Если это ваш первый язык программирования, то можете здесь ничего не менять (вам пока без разницы), можете привыкнуть и к стандартным цветам.
Но если захотите изменить, то переходите на вкладку HIGHLIGHTS (подсветка), и устанавливайте цвета, какие вам больше нравятся:
Рис. 1-3-2. Окно настроек IDLE: вкладка ПОДСВЕТКА СИНТАКСИСА
Если в группе SELECT вы выберите “a Built-in Theme” (встроенные темы), то установится подсветка по умолчанию. В этом случае можно будет выбрать одну из трёх предустановленных тем:
- IDLE Classic
- IDLE Dark
- IDLE New
Если же вы выберите “a Custom Theme” (пользовательская тема), то можете установить свои цвет текста и цвет фона для любого доступного элемента (для ключевых слов, для чисел, для строк и т.п.). Вы можете создать несколько собственных тем.
После того, как вы вдоволь наиграетесь с выбором цветов, надо щёлкнуть по кнопке APPLY, чтобы изменения вступили в силу. Если вы создали свою тему, то её нужно сохранить с помощью кнопки “Save as New Custom Theme”.
Цвета изменяются отдельно для текста (Foreground) и для фона (Background). Для изменения текста или фона должен быть выбран соответствующий переключатель (см. рис. 1-3-2).
Чтобы установить цвет для элемента - щёлкните по кнопке с надписью “Choose Color For” и в открывшемся окне установите нужный цвет.
Под этой кнопкой расположена кнопка выбора элемента, а надпись на этой кнопке указывает на название выбранного элемента. Если щёлкнуть по этой кнопке, то появится список доступных элементов.
Чтобы выбрать элемент для изменения цвета, можно также щёлкнуть по элементу в окне предварительного просмотра.
Остальные три вкладки рассматривать не будем - для начинающих они пока не нужны.
Читайте также: