Файл: Лекция python и его место среди языков программирования.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.01.2024
Просмотров: 27
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Операции над числами
• операнды приводятся к наиболее длинному типу (как в языке C)
• сложение: оператор +
• вычитание: оператор –
• умножение: оператор *
• деление: оператор /
• остаток от деления: оператор %
• деление с округлением вниз: оператор //
результат округляется до ближайшего меньшего целого
тип результата сохраняется
для классического округления есть встроенная функция round()
• возведение в степень: оператор ** или функция pow(x, y)
• Модуль math содержит базовый набор математических функций: sin(), cos(), sqrt() и др.
Строки, байты и байтовые массивы
• Строка, тип str
последовательность символов объекты неизменяемы
• Байты, тип bytes
последовательность байт объекты неизменяемы
• Байтовый массив, тип bytearray
последовательность байт
объекты изменяемы
• Все три типа можно считать коллекциями
• Все три типа обладают свойством упорядоченности
• Объекты создаются вызовом функции, имя которой совпадает с именем типа: str() bytes() и bytearray(). Эти же функции служат для преобразования объекта к нужному типу.
Литералы-строки и литералы-байты
Литералы-байты имеют тот же синтаксис что и литералы-строки, но:
• имеют префикс b перед открывающей кавычкой
• могут содержать только символы ASCII или числовые коды от 0 до 255 в виде Esc- последовательностей языка C
Примеры:
# Литералы-строки
# Литералы-байты s = 'abcdef' а = b'abcdef' s = "abcdef" а = b"abcdef" s = '''Line 1 a = b '''Line 1
Line 2
Line 2
Line 3
Line 3
'''
''' s = """Line 1 a = b"""Line 1
Line 2
Line 2
Line 3
Line 3
"""
"""
Произвольный символ в литерале
• В литерал-строку или литерал-байты можно вставить произвольный символ Unicode
• Для вставки в строку произвольного символа Unicode его шестнадцатеричное численное значение записывается после специального префикса
\x - для однобайтового символа
\u - для двухбайтового символа
\U - для четырехбайтового символа
Примеры для строк:
'\xac', '\u20ac', '\U0001800a' # три строки по одному символу '\xac\u20ac\U0001800a' # строка из трех символов
• Для литералов-байт допустим только префикс \x Пары символов \u и \U специального значения не имеют и интерпретируются "как есть"
Строки и символы
• В Питоне нет типа символ. Вместо единичного символа используется текстовая строка, содержащая один символ.
• В Питоне есть ряд функций и методов для работы с символами аналогичных функциям языка C. Большая часть этих функций вместо действия для одного символа совершает действие для всех символов строки.
• Функция ord() преобразует символ в его числовое значение в таблице
Unicode. Для символов ASCII это числа от 0 до 127.
Функция ord() применима только к строкам единичной длины, при более длинной строке происходит ошибка ord('я') # => 1103 ord('яя') # => Ошибка
• Функция chr() преобразует число в строку с одним символом, код которого в таблице Unicode равен этому числу chr(1103) # => 'я'
Оператор [ ]
• Оператор [ ] служит для обращения к единичному элементу или фрагменту последовательности
• Выбранный элемент или фрагмент может находиться в левой части инструкции присваивания, в этом случае происходит его модификация
• Выбор элемента по индексу, индексация начинается с нуля.
Отрицательный индекс означает отсчет элементов с конца. os[0], s[-1] # первый и последний элементы последовательности os[a:b] # фрагмент от символа с индексом a (включительно) до символа с индексом b (ИСКЛЮЧИТЕЛЬНО !) os[a:b:c] # c - шаг перебора символов
умолчания: а = 0, b : до конца последовательности oc = s[:] # Вся последовательность, создается копия последовательности s
Оператор [ ], примеры
Выборка элемента:
s = 'abcdef' s[2] => 'c' s[-2] => 'е'
Модификация, к типам str и bytes неприменима:
a = bytearray(b'abcdef') a[2] = ord(b'x') # => b'abxdef' a[2:] = b'123' # => b'ab123' # Размер заменяющего и заменяемого a[:-2] = b'98' # => b'9823' # фрагмента могут не совпадать a[:] = b'newtext' # => b'newtext' # Если указан шаг, совпадение a[::2] = b'1234' # => b'1e2t3x4' # размеров фрагментов обязательно
Выборка фрагмента:
s[2:] => 'cdef' s[:-2] # => 'abcd' s[:] # => 'abcdef' s[::2] # => 'ace'
Операторы + и *
Строки, байты и байтовые массивы можно "складывать". Результатом будет новый объект, являющийся соединением (конкатенацией) оригинальных объектов в порядке их следования. Тип результата это тип левого объекта.
Примеры: s = 'Long' + 'Name' # => LongName a1 = bytearray(b'Long') + b'Name' # => bytearray(b'LongName') a2 = b'Long' + bytearray(b'Name') # => b'LongName'
Строки байты и байтовые массивы можно "умножать" на целое число. При умножении на N результатом будет новый объект, в котором содержимое оригинального объекта повторено N раз. Операция коммутативна.
Примеры: s = 'Abc' * 6 # => AbcAbcAbcAbcAbcAbc s = 72 * '=' # => Строка из семидесяти двух символов '='
Создание объектов строк или байт
• Объект может быть определен литералом
• Объект может быть создан вызовом встроенной функции имя которой совпадает с именем класса объекта
• Объект может быть скопирован выделением фрагмента включающего оригинальный объект целиком
• Класс bytearray имеет метод copy()
• Объект может быть считан из файла
# Байты x1 = b'abcdef' x2 = bytes(x1) x3 = x2[:] нет
# Байтовые массивы нет a2 = bytearray(x1) a3 = a2[:] a4 = a3.copy()
# Строки s1 = 'abcdef' s2 = str(s1) s3 = s2[:] нет