View on GitHub

Methodics of Python Intro

Practical materials for learning Python

Данная глава — вводная, она несёт некоторый ознакомительный характер для погружения слушателя в контекст жизни языка программирования.

Быстрый поиск


История Python

История ЯП Python началась в конце 1980-х годов, когда голландский программист Гвидо Ван Россум захотел разработать свой язык программирования в качестве потомка языка ABC. Название Python получил в честь комедийного британского шоу «Летающий цирк Монти Пайтона» (поэтому правильно язык называть «Пайтон»), в котором прослеживалась параллель с миром компьютерной техники, и фанатом которого был Гвидо.

Язык разрабатывается на Си, и благодаря большому профессионализму Гвидо исходники языка являются чуть ли не стандартом ведения Си-проектов — как минимум, очень хорошим примером. Сам Гвидо признавался, что хотел написать язык, в котором можно будет делать всё, что непросто делать на Си.

Язык прошёл три больших версии (каждая из которых заслуживает отдельного внимания как историческое событие в области разработки языков программирования), и активно развивается и сейчас. Каждый крупный релиз новой версии (который происходит обычно чаще раза в год) в Python появляется множество улучшений языка.

Такое стремительное развитие языка обусловлено особым форматом взаимодействия сообщества, основанном на т.н. PEP-ах. Каждый человек, который хочет внести какое-то изменение в Python, может в специальном формате создать заявку-предложение, в которой будет описана проблема текущего языка, актуальность изменения, а также будет предложено решение. Сообщество либо принимает, либо отвергает новое изменение. В случае споров и разногласий до 2019 года их разборами занимался сам Гвидо, приняв статус великодушного пожизненного диктатора. Впоследствии сообщество дошло до самостоятельного решения всех разногласий, освободив Гвидо от этой должности.

На данный момент Гвидо работает в Microsoft, параллельно продолжая вести блоги про свои проекты, в частности про MyPy, добавляющий статическую типизацию в Python.

Python как ЯП

Поскольку Python это интерпретатор, это накладывает некоторое количество особенностей и, в первую очередь, это динамическое построение объектов. Статическая типизация в Python существует в виде отдельного проекта MyPy, в целом, оторванного от основного ЯП.

Ещё одна особенность Python — утиная типизация. Если опустить всю формальность, в случае Python утиная типизация подразумевает, что операции над объектами определяются наличием у этих объектов соответствующих методов (плавает, как утка, и крякает как утка — значит, утка). При этом _тип__ объектов может быть любым, и если операция всё-таки невозможна, ошибка возникает только при выполнении (в рантайме). Условное «сложение» двух объектов будет работать, если у них есть соответствующий метод __add__, вызываемый интерпретатором при встрече символа +, вне зависимости от типов данных объектов.

>>> def addmul(a, b):  
...     return a + b * 2
...
>>> addmul("qwer", "ty")  
'qwertyty'  
>>> addmul(2, 3)  
8  
>>> addmul(2, "2")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in addmul
TypeError: unsupported operand type(s) for +: 'int' and 'str'

При этом в Python используется строгая типизация — в ЯП нет никакой функциональности относительно преобразований объектов. Если, например, в С++ при выполнении некоторой функции проверяется не только полное соответствие, но и некоторые преобразования типов для выбора подходящей функции (при перегрузках функций в понимании С++, например), логика Python прямая: «Если с заданными типами существует функция, она срабатывает. Если нет — не срабатывает».

При работе с объектами в Python используются ссылки, которые обращаются к объектам в памяти. Поэтому под одним именем переменной в процессе выполнения программы можно работать с данными разных типов.

Python наполнен множеством упрощений синтаксиса языка (т.н. «синтаксическим сахаром») и почти бесконечным множеством дополнительных модулей, распространяемых под свободной лицензией.

Применимость Python

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

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