Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
|
base:syntax [2022/08/10 23:20] root |
base:syntax [2022/08/10 23:36] root удалено |
<div slide> | <div slide> |
====== Основы синтаксиса ====== | |
| |
Типы данных в Python, которые мы будем рассматривать в начале курса, можно организовать так: | ====== Функций, операторы, модули ====== |
| |
* Типы | |
* Базовые неизменяемые | |
* Числовые | |
* Целые (''int'') | |
* Действительные (''float'') | |
* Комплексные (''complex'') | |
* Логические (''bool'') | |
* Перечислимые | |
* Строки (''str'') | |
* Байтовые строки (''bytes'') | |
* ''NoneType'' | |
* Базовые изменяемые | |
* Перечислимые | |
* Списки (''list'') | |
* Словари (''dict'') | |
* Наборы (''set'') | |
| |
</div> | |
<div slide> | |
===== Некоторые базовые типы данных ===== | |
| |
^ Тип ^ Описание ^ Примечание ^ Пример ^ | |
| ''int'' | Целое число | Длина не ограничена (при выходе за пределы машинного long int включается "длинная" арифметика) | ''42'' | | |
| ''float'' | Число с плавающей запятой | Машинный ''double'' точнее в ''sys.float_info'' | ''3.14159'' | | |
| ''str'' | Строка | Массив символов в определенной кодировке (по умолчанию utf8). Типа "символ" нет, символ — это строка из одного символа | <code>"привет"</code> | | |
| ''bytes'' | Байтовая строка | Массив байтов. Типа "байт" нет, байт — это байтовая строка из одного символа | <code>b"\x23\x14\x00"</code> | | |
| ''bool'' | Логический тип | Значения ''True'' и ''False'' | ''True'' | | |
| ''NoneType'' | Пустой объект | Единственное значение ''None''| ''None'' | | |
| |
Все эти типы являются неизменяемыми (immutable). С точки зрения памяти новая переменная создается при каждом присваивании. | |
| |
</div> | |
<div slide> | |
| |
===== Присвоение значений и динамическая типизация ===== | |
| |
Python — язык со строгой динамической типизацией. | |
| |
Переменные объявляются в момент присвоения значения, а тип переменной определяется по правой части выражения. | |
| |
<sxh python> | |
# Комментарий: | |
a = 5 # int | |
b = 5.5 # float | |
c = "привет" # str | |
d = b"\x00\x7f\x2e" #bytes | |
e = True # bool | |
f = None # NoneType | |
</sxh> | |
| |
При повторном присваивании типы не проверяются, а создается новая переменная с тем-же именем. | |
| |
<sxh python> | |
d = 42 # Успешно: d теперь имеет тип int и значение 42 | |
</sxh> | |
| |
При выполнении прочих операций типы проверяются | |
| |
<sxh python> | |
d = a + c # Ошибка: нельзя выполнить + для типов int и str | |
</sxh> | |
| |
Можно смешивать переменные разных **числовых** типов в одном выражении | |
<sxh python> | |
d = a + b # Успешно: d теперь имеет тип float и значение 27.5 | |
</sxh> | |
| |
</div> | |
<div slide> | |
| |
===== Строки ====== | |
| |
<sxh python> | |
s = "привет '!' " | |
s = 'привет "!" ' | |
s = '''привет | |
я длинная строка''' | |
s = 'Строка \nс экранированием\n' | |
s = r'Строка без \n экранирования' | |
s = b'Byte String - Only Ascii and \x24' | |
</sxh> | |
| |
===== Распространенные непечатные символы ====== | |
| |
^ Символ ^ Значение ^ | |
| ''\n'' | Новая строка | | |
| ''\t'' | Табуляция | | |
| ''\r'' | Возврат каретки | | |
| ''\u????'' | Символ Unicode: ''????'' — код символа (для строк) | | |
| ''\x??'' | Байт ''??'' — код байта (для байтовых строк) | | |
| ''\\'' | Символ ''\'' | | |
| |
Проблемы с экранированием возникают при работе с регулярными выражениями и именами папок в Windows: | |
| |
<sxh python> | |
pth = 'C:\new_files\ret_id' # Ошибка \n и \r недопустимы в имени папки | |
pth = 'C:\\new_files\\ret_id' # Все хорошо | |
pth = r'C:\new_files\ret_id' # Все хорошо | |
pth = 'C:\files\ ' # Ошибка экранированный символ \' в конце строки \' | |
pth = 'C:\files' # Все хорошо | |
</sxh> | |
| |
</div> | |
<div slide> | |
| |
===== Функций, операторы, модули ===== | |
| |
==== Функции ==== | ==== Функции ==== |
^ <code>//</code> | <code>bool, int, float</code> | Целочисленное деление |<code>2//5</code> | | ^ <code>//</code> | <code>bool, int, float</code> | Целочисленное деление |<code>2//5</code> | |
^ <code>%</code> | <code>bool, int, float</code> | Остаток от деления | <code>2%5</code> | | ^ <code>%</code> | <code>bool, int, float</code> | Остаток от деления | <code>2%5</code> | |
^ <code>%</code> | <code>str, bytes</code> | Операция подстановки для ''str'' | <code>"hello %s" % "world"</code> | | ^ <code>%</code> | <code>str, bytes</code> | Операция **подстановки** для ''str'' | <code>"hello %s" % "world"</code> | |
| |
Python позволяет смешивать переменные разных **числовых** типов в одном выражении, при этом тип результата определяется наиболее содержательным типом. | Python позволяет смешивать переменные разных **числовых** типов в одном выражении, при этом тип результата определяется наиболее содержательным типом. |
| |
^ Оператор ^ Действие ^ Пример ^ | ^ Оператор ^ Действие ^ Пример ^ |
^ <code>not</code> | Логическое НЕ для ''bool''| <code>not x</code> | | ^ <code>not</code> | Логическое НЕ для ''bool'', возвращает ''bool''| <code>not x</code> | |
^ <code>and</code> | Логическое И для ''bool'' | <code>x and y</code> | | ^ <code>and</code> | Логическое И для ''bool'', возвращает ''bool'' | <code>x and y</code> | |
^ <code>or</code> | Логическое ИЛИ для ''bool'' | <code>x or y</code> | | ^ <code>or</code> | Логическое ИЛИ для ''bool'', возвращает ''bool'' | <code>x or y</code> | |
^ <code>!=, >, <, >=, <=</code> | Неравенство, возвращает ''bool'' | <code>x >= y</code> | | ^ <code>!=, >, <, >=, <=</code> | Неравенство, возвращает ''bool'', возвращает ''bool'' | <code>x >= y</code> | |
^ <code>==</code> | Равенство, возвращает ''bool'' | <code>x == y</code> | | ^ <code>==</code> | Равенство, возвращает ''bool'' | <code>x == y</code> | |
^ <code>is</code> | Тождество, возвращает ''bool'' | <code>x is y</code> | | ^ <code>is</code> | Тождество, возвращает ''bool'' | <code>x is y</code> | |
| ^ <code>~</code> | Логическое НЕ для ''int'', возвращает ''int'' | <code>~ x</code> | |
| ^ <code>&</code> | Логическое И для ''int'', возвращает ''int'' | <code>x & y</code> | |
| ^ <code>|</code> | Логическое ИЛИ для ''int'', возвращает ''int'' | <code>x | y</code> | |
| |
</div> | </div> |
| |
^ ^ Исходный тип — переменная ''x'' ^^^^^ | ^ ^ Исходный тип — переменная ''x'' ^^^^^ |
^ Целевой тип ^ ''int'' ^ ''float'' ^ ''str'' ^ ''bytes'' ^ ''bool'' ^ | ^ Целевой тип ^ ''bool'' ^ ''int'' ^ ''float'' ^ ''str'' ^ ''bytes'' ^ |
^ ''int'' | ''='' | ''round(x)'', ''math.ceil(x)'', ''math.trunc(x)'' | ''int(x)'' | ''struct.unpack(fmt,x)'' | ''int(x)'' | | ^ ''bool'' | ''='' | ''bool(x)'' | ''bool(x)'' | ''bool(x)'' | ''bool(x)'' | |
^ ''float'' | ''float(x)'' | ''='' | ''float(x)'' | ''struct.unpack(fmt,x)'' | ''float(x)'' | | ^ ''int'' | ''int(x)'' | ''='' | ''round(x)'', ''math.ceil(x)'', ''math.trunc(x)'' | ''int(x)'' | ''struct.unpack(fmt,x)'' | |
^ ''str'' | ''str(x)'' | ''str(x)'' | ''='' | ''x.decode(encoding)'' | ''str(x)'' | | ^ ''float'' | ''float(x)'' | ''float(x)'' | ''='' | ''float(x)'' | ''struct.unpack(fmt,x)'' | |
^ ''bytes'' | ''struct.pack(fmt,x)'' | ''struct.pack(fmt,x)'' | ''x.encode(encoding)'' | ''='' | ''struct.pack(fmt, x)'' | | ^ ''str'' | ''str(x)'' | ''str(x)'' | ''str(x)'' | ''='' | ''x.decode(encoding)'' | |
^ ''bool'' | ''bool(x)'' | ''bool(x)'' | ''bool(x)'' | ''bool(x)'' | ''='' | | ^ ''bytes'' | ''struct.pack(fmt, x)'' | ''struct.pack(fmt,x)'' | ''struct.pack(fmt,x)'' | ''x.encode(encoding)'' | ''='' | |
| |
Используются модули ''math'' и ''struct''. | Используются модули ''math'' и ''struct''. |