Урок №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: Гвидо Ван Россум.
- Язык назван в честь труппы Монти Пайтон.
Философия Python:
import this
Основные понятия
- Переменная — именованная область памяти, имя которой можно использовать для получения доступа к данным. Объект (в 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 — набор правил как стоит писать код.
https://www.python.org/dev/peps/pep-0257/ — PEP-257 стандартный flow для докстрингов
Документация:
- Python Official Website: http://www.python.org/.
- Python Documentation Website: www.python.org/doc/.
Литература:
- М.Лутц “Изучаем Python” 4-e издание.
- Бизли Д. “Python. Подробный справочник”
Линукс.
- Брайан Уорд. “Внутреннее устройтво Linux”.
Вопрос можно задавать тут:
Code Snippets
# Присвоение переменных.
a = 1
b = a
print(a, b)
2222222122 2222222122
# Переопределение переменной.
a = 1
a = a + 1
print(a)
2
# Пример динамической типизации.
a = 1
print(a, type(a))
a = 2.0
print(a, type(a))
1 <class 'int'> 2.0 <class 'float'>
a = 1
print(a, type(a))
a = (2.0, 2, 3, 4, 5)
print(a, type(a))
1 <class 'int'> (2.0, 2, 3, 4, 5) <class 'tuple'>
# Пример сильной типизации. a = 1 b = '23' # это строка print(a+b) TypeError Traceback (most recent call last) <ipython-input-6-65c4944a1d0f> in <module>() 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)
-1
# Арифметические операции.
a = 1
print(a + 2)
print(a - 2)
print(a * 2)
print(a)
3 -1 2 1
# Деление.
a = 10
b = 3
print(«Истинное деление:», a / b)
print(«Частное:», a // b)
print(«Остаток:», a % b)
Истинное деление: 3.3333333333333335 Частное: 3 Остаток: 1
#Остаток может быть от·0 до делителя.
print(-10·%·3)
print(10·%·-3)
print(-10·%·-3)
2 -2 -1
# Другие операции.
print(5 ** 2)
print(abs(-3))
25 3
Подпишитесь на рассылку