Урок №1 Подпишитесь на рассылку в конце статьи чтобы смотреть материал раньше всех

Общая характеристика Python

Давайте рассмотрим основные характеристики Python как языка программирования:

  • Высокоуровневый.
  • Общего назначения.
  • Интерпретируемый.
  • Объектно-ориентированный.
  • Императивный.
  • Строго (сильно) типизированный.
  • Имеет динамическую типизацию.

Давайте рассмотрим эти характеристики по отдельности.

Высокоуровневый

Языки программирования делятся на высокоуровневые и низкоуровневые. Низкоуровневые языки — языки, близкие к программированию в машинном коде или приближенных к ним конструкциям (например, байт-кодам). Классика низкоуровневого программирования: Ассемблер.

Высокоуровневые языки — соответственно разрабатываются для удобство использования и скорости написания программы. В них применяются определенные абстракции — структуры данных, определенный набор вспомогательных функций и т.д. Это практически все известные вам языки.

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

Общего назначения

Языки делятся на языки общего назначения (PythonCPascal) и специализированные(DSL) (SQLHTML).

Интерпретируемый

Языки делятся на интерпретируемые(PythonBasic) и компилируемые (CPascal). В первом случае программа выполняется специальной программой — интерпретатором, «на лету», во втором программа сначала преобразуется в понятные компьютеру исполняемые файлы.

Стоит отметить, что на самом деле многие современные «интерпретируемые языки» являются на самом деле intermediate representation языками, которые сначала перегоняют нашу программу в специальные «байт-коды», понятные интерпретатору, после чего он их интерпретирует. PythonJava и многие другие как раз такие языки. Чуть больше об этом можно прочитать тут: https://en.wikipedia.org/wiki/Intermediate_representation

Объектно-ориентированный

Языки делятся на процедурные, функциональные и объектно-ориентированные в зависимости от того, с помощью каких конструкций структурируется программа и как происходит решение задачи.

В объектно-ориентированных языках работа идет с классами, как типами, и экземплярами классов, как объектов этого типа. Решение задач строится на взаимодействии различных классов.

Тем не менее, Python, являясь ОО-языком, поддерживает и процедурное программирование и программу можно написать без единого класса.

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

Императивный

Языки делятся на императивные — когда мы задаем последовательность команд для выполнения задачи, и декларативные — когда мы описываем результат, который хотим получить(SQL).

Строго (сильно) типизированный

Сильно типизированные языки предполагают, что интепретатор не будет неявно приводить типы при попытке выполнения команды. В слабо типизированных языках могут происходить неявные приведения типа.

Динамическая типизация

Динамическая типизация предполагает, что в процессе выполнения команды переменная может содержать объекты различных типов.

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


Особенности Python

Некоторые особенности языка:

  • Интроспекция.
  • Автоматическое управление памятью.
  • Много возможностей в стандартной библиотеке.
  • Мультиплатформенность.
  • «Вшитые» паттерны проектирования.
  • Usability — фокус на удобство использования.
  • Readability — элементы форматирования являются частью синтаксиса.
  • Интерактивный язык.

И еще пара слов:

  • Создатель Python: Гвидо Ван Россум.
  • Язык назван в честь труппы Монти Пайтон.

Философия Python:

import this

Основные понятия

  1. Переменная — именованная область памяти, имя которой можно использовать для получения доступа к данным. Объект (в Python все является объектом), на который ссылается переменная — называется значением переменной.
  2. Присвоение переменной (assignment) — процесс указания переменной объекта, на который она будет ссылаться. В Python присвоение осуществляется с помощью =:my_variable = 1Имена переменных могут формироваться из AZaz_09. Важно: переменная не может начинаться с цифры. Обычные переменные в Python именуются в snake_case.
  3. Оператор, или инструкция — наименьшая часть языка программирования. Это команда или набор команд, которые могут быть выполнены исполнителем. Объекты, над которыми операторы производят действия, называются операндами. В зависимости от их количества операторы делятся на:
  • Унарные (-1 — унарный минус).
  • Бинарные (1 + 2 — сложение).
  • Тернарные (пример чуть позже). Операндов — 3.
  1. Выражение — совокупность переменных, операторов, функций, которую можно вычислить в соответствии с синтаксисом языка.

Типы данных в Python. Числа

Все типы данных, встроенные в Python, делятся на:

  • Неизменяемые(immutable) — числа, строки, кортежи, boolean.
  • Изменяемые(mutable) — словари, списки, множества и фактически все остальные типы.

Числа в Python бывают 3 типов:

  • Целые числа (int).
  • Десятичные числа (float).
  • Комплексные числа (complex) — представляют собой пару целых чисел, первое из которых называется действительной частью, а второе — мнимой.

Операции, производимые над числами:

  • + — сложение двух чисел.
  • - — вычитание.
  • * — умножение.
  • ** — возведение в степень.
  • / — истинное деление.
  • // — частное.
  • % — остаток от деления.
  • - — унарный минус.
  • abs — модуль числа.

Приоритеты операторов

Приоритеты операторов указаны в следующей таблице:

ОператорОписание
**Возведение в степень
+-~Унарные +, — и побитовое отрицание
*///%Умножение, деление
+-Сложение, вычитание
\Побитовое ИЛИ
^Побитое исключающее ИЛИ
&Побитовое И
>><<Побитовые сдвиги
>>=<<===!=Сравнения
=%=/=//=-=+=*=**=Присвоения
isis notОператоры идентичности
innot 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” 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

Подпишитесь на рассылку

Если это было вам полезно — вы можете сказать нам спасибо!