- Язык программирования Python. Основы
- Общая характеристика Python
- Высокоуровневый
- Общего назначения
- Интерпретируемый
- Объектно-ориентированный
- Императивный
- Строго (сильно) типизированный
- Динамическая типизация
- Особенности Python
- Основные понятия
- Типы данных в Python. Числа
- Приоритеты операторов
- Дополнительная информация
- Code Snippets
- Работа с числами
- Основные реализации Python: характеристика и преимущества
- Основные реализации Python
- 1. CPython
- 2) Jython
- 3) IronPython
- 4) PyPy
- 5) Cython
- Заключение
Язык программирования Python. Основы
Python — очень популярный в настоящее время язык программирования, причем со временем его популярность только растет. Он нашел свое применение во многих областях разработки программного обеспечения.
Урок №1 Подпишитесь на рассылку в конце статьи чтобы смотреть материал раньше всех
Общая характеристика Python
Давайте рассмотрим основные характеристики Python как языка программирования:
- Высокоуровневый.
- Общего назначения.
- Интерпретируемый.
- Объектно-ориентированный.
- Императивный.
- Строго (сильно) типизированный.
- Имеет динамическую типизацию.
Давайте рассмотрим эти характеристики по отдельности.
Высокоуровневый
Языки программирования делятся на высокоуровневые и низкоуровневые. Низкоуровневые языки — языки, близкие к программированию в машинном коде или приближенных к ним конструкциям (например, байт-кодам). Классика низкоуровневого программирования: Ассемблер.
Высокоуровневые языки — соответственно разрабатываются для удобство использования и скорости написания программы. В них применяются определенные абстракции — структуры данных, определенный набор вспомогательных функций и т.д. Это практически все известные вам языки.
Стоит отметить, что высокоуровневые языки неоднородны. Некоторые, как Python, полностью освобождают программиста от прямого использования ресурсов компьютера, другие, например С, позволяют напрямую работать с памятью и даже использовать ассемблерные вставки.
Общего назначения
Языки делятся на языки общего назначения (Python, C, Pascal) и специализированные(DSL) (SQL, HTML).
Интерпретируемый
Языки делятся на интерпретируемые(Python, Basic) и компилируемые (C, Pascal). В первом случае программа выполняется специальной программой — интерпретатором, «на лету», во втором программа сначала преобразуется в понятные компьютеру исполняемые файлы.
Стоит отметить, что на самом деле многие современные «интерпретируемые языки» являются на самом деле intermediate representation языками, которые сначала перегоняют нашу программу в специальные «байт-коды», понятные интерпретатору, после чего он их интерпретирует. Python, Java и многие другие как раз такие языки. Чуть больше об этом можно прочитать тут: https://en.wikipedia.org/wiki/Intermediate_representation
Объектно-ориентированный
Языки делятся на процедурные, функциональные и объектно-ориентированные в зависимости от того, с помощью каких конструкций структурируется программа и как происходит решение задачи.
В объектно-ориентированных языках работа идет с классами, как типами, и экземплярами классов, как объектов этого типа. Решение задач строится на взаимодействии различных классов.
Тем не менее, Python, являясь ОО-языком, поддерживает и процедурное программирование и программу можно написать без единого класса.
В основе функциональных языков лежит отличная от предыдущих вычислительная система, называемая лямбда-исчисление, которая, тем не менее, эквивалентна машине Тьюринга, о чем доказана соответствующая теорема.
Императивный
Языки делятся на императивные — когда мы задаем последовательность команд для выполнения задачи, и декларативные — когда мы описываем результат, который хотим получить(SQL).
Строго (сильно) типизированный
Сильно типизированные языки предполагают, что интепретатор не будет неявно приводить типы при попытке выполнения команды. В слабо типизированных языках могут происходить неявные приведения типа.
Динамическая типизация
Динамическая типизация предполагает, что в процессе выполнения команды переменная может содержать объекты различных типов.
Статическая типизация предполагает, что при задании переменной сразу указывается тип данных, который она может содержать.
Особенности Python
Некоторые особенности языка:
- Интроспекция.
- Автоматическое управление памятью.
- Много возможностей в стандартной библиотеке.
- Мультиплатформенность.
- «Вшитые» паттерны проектирования.
- Usability — фокус на удобство использования.
- Readability — элементы форматирования являются частью синтаксиса.
- Интерактивный язык.
Основные понятия
- Переменная — именованная область памяти, имя которой можно использовать для получения доступа к данным. Объект (в Python все является объектом), на который ссылается переменная — называется значением переменной.
- Присвоение переменной (assignment) — процесс указания переменной объекта, на который она будет ссылаться. В Python присвоение осуществляется с помощью = : my_variable = 1 Имена переменных могут формироваться из A — Z , a — z , _ , 0 — 9 . Важно: переменная не может начинаться с цифры. Обычные переменные в Python именуются в snake_case.
- Оператор, или инструкция — наименьшая часть языка программирования. Это команда или набор команд, которые могут быть выполнены исполнителем. Объекты, над которыми операторы производят действия, называются операндами. В зависимости от их количества операторы делятся на:
- Унарные (-1 — унарный минус).
- Бинарные (1 + 2 — сложение).
- Тернарные (пример чуть позже). Операндов — 3.
- Выражение — совокупность переменных, операторов, функций, которую можно вычислить в соответствии с синтаксисом языка.
Типы данных в Python. Числа
Все типы данных, встроенные в Python, делятся на:
- Неизменяемые(immutable) — числа, строки, кортежи, boolean.
- Изменяемые(mutable) — словари, списки, множества и фактически все остальные типы.
Числа в Python бывают 3 типов:
- Целые числа (int).
- Десятичные числа (float).
- Комплексные числа (complex) — представляют собой пару целых чисел, первое из которых называется действительной частью, а второе — мнимой.
Операции, производимые над числами:
- + — сложение двух чисел.
- — — вычитание.
- * — умножение.
- ** — возведение в степень.
- / — истинное деление.
- // — частное.
- % — остаток от деления.
- — — унарный минус.
- abs — модуль числа.
Приоритеты операторов
Приоритеты операторов указаны в следующей таблице:
Оператор | Описание |
---|---|
** | Возведение в степень |
+ , — , ~ | Унарные +, — и побитовое отрицание |
* , / , // , % | Умножение, деление |
+ , — | Сложение, вычитание |
\ | Побитовое ИЛИ |
^ | Побитое исключающее ИЛИ |
& | Побитовое И |
>> , | Побитовые сдвиги |
> , >= , < , | Сравнения |
= , %= , /= , //= , -= , += , *= , **= | Присвоения |
is , is not | Операторы идентичности |
in , not in | Операторы вхождения |
not | Логическое отрицание |
and | Логическое И |
or | Логическое ИЛИ |
Чем выше в таблице находится оператор, тем выше его приоритет. Операторы, расположенные на одной строке имеют одинаковый приоритет.
number_of_goods = 123
good_price = 100
total_price = number_of_goods * good_price
Дополнительная информация
PEP — Python Enhancement Proposals.
PEP-8 — набор правил как стоит писать код.
Вопрос можно задавать тут:
Code Snippets
# Присвоение переменных.
a = 1
b = a
print(a, b)
# Переопределение переменной.
a = 1
a = a + 1
print(a)
# Пример динамической типизации.
a = 1
print(a, type(a))
a = 2.0
print(a, type(a))
a = 1
print(a, type(a))
a = (2.0, 2, 3, 4, 5)
print(a, type(a))
# Пример сильной типизации. a = 1 b = '23' # это строка print(a+b) TypeError Traceback (most recent call last) in () 2 a = 1 3 b = '23' # это строка ----> 4 print(a+b) TypeError: unsupported operand type(s) for +: 'int' and 'str'
Работа с числами
# Унарный минус.
a = 1
a = -a
print(a)
# Арифметические операции.
a = 1
print(a + 2)
print(a - 2)
print(a * 2)
print(a)
print(«Истинное деление:», a / b)
Истинное деление: 3.3333333333333335 Частное: 3 Остаток: 1
#Остаток может быть от·0 до делителя.
Основные реализации Python: характеристика и преимущества
В этой статье мы расскажем вам о CPython, Jython, IronPython, PyPy и Cython. Поговорим об их основных отличиях и преимуществах.
Область компьютерных наук является, пожалуй, самой популярной в наши дни. И она всё ещё продолжает расти и развиваться. То, что представляют из себя компьютерные науки сейчас, совсем не похоже на то, чем они были в самом начале. Благодаря Computer Science, теперь есть возможность создавать вещи, которые волшебным образом меняют жизни миллионов людей! Такой разительный прогресс позволил создать искусственный интеллект, глубокое обучение и многие другие концепции, которые раньше считались невозможными.
Языки программирования в целом являются одним из наиболее стремительно развивающихся элементов компьютерных наук. Но развиваются они неравномерно. Возьмем к примеру Python. Это высокоуровневый язык программирования, который очень вырос со времени своего выхода в свет и сейчас используется в самых разных сферах. В результате он выделяется даже на фоне других успешно развивающихся языков.
Стоит отметить, что сам по себе Python довольно многообразен и используется в различных реализациях. Это и будет темой нашей статьи: мы рассмотрим разные способы реализации этого языка, существующие на данный момент.
Основные реализации Python
Мы уже несколько раз использовали термин «реализация». Но что под этим подразумевается? Говоря о реализации, мы имеем в виду то, как был написан интерпретатор – какие языки были использованы и какова главная задача конкретно этого интерпретатора.
А теперь давайте разберем некоторые реализации Python.
1. CPython
CPython – это, по сути, дефолтный и наиболее распространенный интерпретатор (реализация) языка Python, написанный на C. Это изначальная версия языка, которую пользователи скачивают с официального сайта – Python.org.
Лучше всего CPython можно описать как некую смесь интерпретатора и компилятора, так как написанный вами код преобразуется в байт-код. Под байт-кодом мы понимаем программный код, который компилируется и преобразуется в низкоуровневый язык, который, в свою очередь, может быть использован как набор инструкций для интерпретатора. Именно этот байт-код и выполняется на виртуальной машине CPython.
Поскольку это «родная» реализация Python, CPython наиболее совместим с пакетами и модулями языка. Эта реализация будет наилучшим выбором, если вам нужно написать код, полностью соответствующий стандартам Python.
2) Jython
Jython – это ещё одна реализация Python. Она была написана на Java и работает на Java-платформах. Как и в CPython, исходный код конвертируется в байт-код – набор инструкций для интерпретатора. Jython работает на виртуальной машине, которая использует то же окружение, что и Java. Данная реализация обеспечивает удобную работу с Java-программами. Вы легко сможете вызывать и использовать свои функции и классы Java непосредственно из Jython. Это дает пользователям Python доступ к огромнейшей экосистеме библиотек и фреймворков, имеющихся в Java. И наоборот.
3) IronPython
Если Jython был разработан для пользователей Java, то IronPython — популярная реализация, написанная на C#. Её разработали для работы на платформе .NET. Она создает мост во вселенную .NET, дающий пользователям Python доступ к функциям и классам C#, библиотекам и фреймворкам .NET прямо из IronPython. Данная реализация отлично подходит для многопоточных программ. Вы можете её найти на официальном сайте — ironpython.net.
4) PyPy
Эта реализация написана на самом Python и является альтернативой CPython. PyPy был написан с учетом всех особенностей языка Python, поэтому он наиболее совместим с CPython. Это позволяет запускать веб-фреймворки, такие как Django и Flask. PyPy использует концепцию JIT-компиляции (Just-in-time), которая позволяет компилировать исходный код прямо во время выполнения программы. Это делает PyPy в несколько раз быстрее CPython. Многие пользователи последнего жаловались именно на низкую скорость выполнения. Таким образом, PyPy полностью улучшает эту часть CPython.
5) Cython
В отличие от других реализаций Python, упомянутых выше, Cython не является интерпретатором Python. Это, скорее, надмножество языка Python, которое дает возможность пользователям компилировать программы на языке C.
Вообще, объединенная мощь Python и C — самое потрясающее в Cython. Благодаря ей Cython можно использовать для написания расширений C, а также для преобразования Python-кода в C. Таким образом, Cython сохраняет удобство и комфорт, за которые все так любят Python, устраняя многие ограничения последнего.
Заключение
Python за годы своего активного развития очень расширился. Различные реализации этого языка удовлетворяют нужды разных пользователей. Если вы планируете писать код на Python на профессиональном уровне, высока вероятность, что со временем вы столкнетесь с несколькими из упомянутых реализаций. И когда это произойдет, нужно уметь распознать, с чем именно вы столкнулись, и почему для данного кода выбрана именно такая реализация Python.