Skip to content

pivasbulba/LitePythonInterpreter

Repository files navigation

lite python Interpreter

Описание lite-версии языка python

Числа

В языке lite python используются только целые числа. С ними можно выполнять обычные арифметические операции: сложение, вычитание, умножение, деление (целочисленное).

Строки

Строковая константа в языке lite python — это последовательность произвольных символов, размещающаяся на одной строке и ограниченная либо символами ", либо символами '. Примеры строк в lite python:

"hello"
'world'
'long string with a double quote " inside'
"another long string with single quote ' inside"

'', "" — пустые строки

Строки в языке lite python являются неизменяемыми.

Логические константы и None

Помимо строковых и целочисленных значений язык lite python поддерживает логические значения True и False, а также специальное значение None.

Идентификаторы

Идентификаторы в lite python используются для обозначения имён переменных, классов и методов (см. далее). Они начинаются со строчной или заглавной латинской буквы либо с символа подчёркивания, за которым следует произвольная последовательность, состоящая из цифр, букв и символа подчёркивания.

Примеры правильных идентификаторов: lite python x, _42, do_something, int2str. Примеры неправильных идентификаторов: 4four — начинается с цифры one;two — содержит символ не являющийся цифрой, буквой или знаком подчёркивания

Классы

Также в языке lite python есть возможность определить свой тип, создав класс. Объявление класса начинается с ключевого слова class, за которым следует идентификатор имени и объявление методов класса. Пример класса, представляющего собой прямоугольник:

class Rect:
  def __init__(w, h):
    self.w = w
    self.h = h

  def area():
    return self.w * self.h
  • Cпециальный метод __init__ играет роль конструктора — он автоматически вызывается при создании нового объекта класса;

  • Неявным параметром всех методов является специальный параметр self;

  • Поля не объявляются заранее, а добавляются в объект класса при первом присваивании, как следствие обращения к полям всегда надо начинать с self., чтобы отличать их от локальных переменных;

  • Все поля объекта являются публичными.

Новый объект класса создаётся указанием имени класса, за которым в скобках идут параметры, передаваемые методу __init__. Например, Rect(10, 5) — это новый объект класса Rect, при вызове метода __init__ параметр w будет иметь значение 10, а параметр h — 5.

Типизация

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

x = 4           # переменная x связывается с целочисленным значением 4
x = 'hello'     # следующей командой переменная x связывается со строковым значением 'hello'
y = True
x = y

Операции

В языке lite python определены:

  • арифметические операции для целых чисел (деление выполняется нацело)

  • операция конкатенации строк; пример — s = 'hello, ' + 'world'

  • операции сравнения строк и целых чисел на «равно/не равно», «больше/меньше», «больше или равно/меньше или равно»; при этом сравнение строк выполняется лексикографически

Функция str

Функция str преобразует переданный ей аргумент в строку. Если аргумент является объектом класса, она вызывает у него специальный метод __str__ и возвращает его результат. Если метода __str__ в классе нет, она возвращает строковое представление адреса объекта в памяти. Примеры:

Добавим в класс Rect метод __str__:

class Rect(Shape):
  def __init__(w, h):
    self.w = w
    self.h = h

  def __str__():
    return "Rect(" + str(self.w) + 'x' + str(self.h) + ')'

#Тогда str(Rect(3, 4)) вернёт строку Rect(3x4).

Команда print

Специальная команда print принимает набор аргументов, разделённых запятой, печатает их в стандартный вывод и дополнительно выводит перевод строки. Например, код

x = 4
w = 'world'
print x, x + 6, 'Hello, ' + w
#выведет  4 10 Hello, world  

Для преобразования каждого своего аргумента в строку команда print вызывает для него функцию str. Таким образом команда print Rect(20, 15) выведет в stdout строку Rect(20x15).

Условный оператор

В языке lite python есть условный оператор, он имеет следующий синтаксис:

if <условие>:
  <действие 1>
  <действие 2>
  ...
  <действие N>
else:
  <действие 1>
  <действие 2>
  ...
  <действие M>

<условие> — это произвольное выражение, за которым следует символ двоеточия. Если условие истинно, то выполняются действия под веткой if, если ложно — действия под веткой else. Ветка else может отсутствовать. <условие> может содержать сравнения, а также логические операции and, or и not. Истинность условия определяется в зависимости от типа значения, являющегося результатом его вычисления:

  • если результатом вычисления условия является значение логического типа, то для проверки истинности условия используется именно оно (например, if x > 0:, if s != 'Jack' and s != 'Ann':)

  • если результатом вычисления условия является число, то условие истинно тогда и только тогда, когда это число не равно нулю, например, if x + y:

  • если результатом вычисления условия является строка, то условие истинно тогда и только тогда, когда эта строка имеет ненулевую длину

  • если результатом вычисления условия является объект класса, то условие истинно

  • если результатом вычисления условия является None, то условие ложно

Наследование

В языке lite python у класса может быть один родительский класс. Если он есть, он указывается в скобках после имени класса и до символа двоеточия. В примере ниже класс Rect наследуется от класса Shape

class Shape:
  def __str__():
    return "Shape"

  def area():
    return 'Not implemented'

class Rect(Shape):
  def __init__(w, h):
    self.w = w

Методы

Как вы могли видеть выше, методы в lite python имеют синтаксис:

def <имя метода>(<список параметров>):
  <действие 1>
  <действие 2>
  ...
  <действие N>

Команда return завершает выполнение метода из возвращает из него результат вычисления своего аргумента. Если исполнение метода не достигает команды return, метод возращает None.

Семантика присваивания

Как было сказано выше, lite python — это язык с динамической типизацией, поэтому операция присваивания имеет семантику не копирования значения в область памяти, а связывания имени переменной со значением. Как следствие, переменные только ссылаются на значения, а не содержат их копии. Говоря терминологией С++, можно сказать, что все переменные в lite python являются указателями (аналогом nullptr является значение None). Таким образом, код ниже выведет "2", так как переменные x и y ссылаются на один и тот же объект.

About

Lite Python Interpreter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published