Файл: Лекция python и его место среди языков программирования.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.01.2024

Просмотров: 26

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ЛЕКЦИЯ
Python и его место среди языков программирования
Запуск Python программ

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

https://www.python.org/

Ресурсы в сети Internet
Официальный сайт языка Python
https://www.python.org/
Здесь находятся:
• Официальная документация по языку и стандартной библиотеке отличный справочный материал, не столько для изучения, скорее для поиска ответа на любой вопрос
• Документы PEP (Python Enhancement Proposals) фактически это изложение стандарта языка
• Инсталляционные пакеты для Windows, Mac OS X и Linux

Версии языка Python
Версия 1 уже давно не используется
Версия 2 Все еще используется в ряде проектов, но официально не поддерживается с 2020 года, рекомендуется использовать 3-ю версию
Версия 3, изменения:
• Эффективная работа с большими объемами данных
• Строгая реализация работы с Unicode
Последовательности байт выделены в отдельный тип данных
• инструкция print заменена функцией print()
Увеличена гибкость операции вывода на консоль
В версию 2 введен модуль future для обеспечения обратной совместимости

История
• Создание Python было начато Гвидо ван Россумом
(Guido van Rossum) в 1991 году, когда он работал над распределенной ОС Амеба. Ему требовался расширяемый язык, который бы обеспечил поддержку системных вызовов.
За основу были взяты ABC и Модула-3.
• В качестве названия он выбрал Python в честь комедийных серий BBC "Летающий цирк Монти-Пайтона", а вовсе не по названию змеи.

Python это открытое программное обеспечение
• Интерпретатор
Собственная лицензия, совместимая с GPL
Нет ограничений на интеграцию с коммерческими продуктами.
Сделанные изменения не обязательно должны иметь открытую лицензию
• Программы
 Реализация программы, как интерпретируемого текста препятствует ее "закрытию"
 Есть возможность распространения программ в виде байт-кода или в виде монолитного исполняемого файла, однако такой подход встречается достаточно редко
• Открытое и бесплатное программное обеспечение это не одно и то же


Почему Python ?
• Используется в CERN
 наличие стандартных библиотек, ориентированных на научные вычисления
 комплексный тип данных, как один из базовых числовых типов
• Используется в Google
Google App Engine
решение ряда внутренних инженерных задач
• Фактический стандарт интерпретируемого языка программирования в
Linux, постепенно заменяет собой Perl
• Высокая производительность труда программиста
• Программы [почти] независимы от платформы исполнения
• Один из наиболее востребованных на рынке труда интерпретируемый язык программирования

Недостатки Python
• медленнее чем C/C++
• распараллеливание программ сильно затруднено
 параллельные процессы достаточно эффективны
 мультитредовые приложения ограничены GIL (Global
Interpreter Lock)
• много возможностей, необходимость самодисциплины
• часть ошибок выявляется только на этапе исполнения, это общий недостаток интерпретируемых языков
 юнит-тестирование приобретает особую важность
 непрерывная интеграция позволяет обнаруживать ошибки на ранних этапах разработки

Среда разработки
• Любой текстовый редактор
• PyCharm от JetBrains https://www.jetbrains.com/pycharm/
бесплатно по почте в зоне edu.ru https://www.jetbrains.com/student/

Терминология
• Программа на Питоне это последовательность инструкций
• Инструкция это инструкция управления, например
цикл или условие
инструкция присваивания: переменная = выражение
одиночное выражение записанное в строке текста программы, в том числе элементарное выражение
Оператор - символ операции допустимой в выражении.
• Вызов функции является оператором
Выражение это последовательность операндов соединенных операторами.
Выражение не может содержать инструкций.
Операнд это выражение, в том числе элементарное выражение
Элементарное выражение это литерал или переменная
Литерал это буквальная запись данных, например число или строка
• Следует различать строку текста программы (line) и строку-литерал (string)

Особенности синтаксиса и терминологии
• Строка текста программы это инструкция
• Отступы это часть синтаксиса
• Составная конструкция языка состоит из заголовка и блока
Заголовок это строка, завершающаяся двоеточием
Блок это последовательность строк, отступ которых на единицу больше, чем у строки-заголовка if apples > pears: eat_apples(apples - pears) print('We ate extra apples') get_more_fruits()
• Массив это list, неизменяемый массив это tuple (кортеж)
• Хеш или map (ассоциативный массив) это dict (словарь)
• Язык поддерживает тип данных set (множество) к которому применимы теоретико-множественные операции


Функция print()
• Начиная с версии 3 в языке Python инструкция print заменена функцией print()
• Большинство объектов имеют свойство "быть напечатанным", то есть быть преобразованным в текстовую строку
• Функция print() воспринимает любое количество аргументов и "печатает" их последовательно в стандартный вывод разделяя пробелом и завершая символом новой строки
• Именованные аргументы позволяют настроить поведение функции print()
аргумент sep позволяет заменить разделитель
аргумент end позволяет заменить конец строки
аргумент file позволяет направить вывод в файл
Пример замены разделителя: print(1, 2, 3) # => 1 2 3 print(1, 2, 3, sep='->') # => 1->2->3

Литерал строки
• Литерал строки это последовательность символов, заключенных в одинарные или двойные кавычки
• Литералы в одинарных кавычках и литералы в двойных кавычках эквивалентны и интерпретируются одинаково
• Литералы ограниченные тремя символами кавычек могут занимать несколько строк текста программы, при этом символы переноса строки входят в состав литерала как символ \n (10)
• Внутри строк интерпретируются C Esc-последовательности
• Переменные внутри строк не интерпретируются.
• Для "внедрения" в строку значения переменной существует оператор
% и синтаксис аналогичный функции printf() языка C
Пример: s = '%2d часов\t%02d минут' % (16, 30) print(s)

Комментарии
Символ комментария #.
• Сам символ и все символы справа от него и до конца строки игнорируются
• Для комментирования большого фрагмента текста можно использовать строки в тройных кавычках
• Строка это элементарное выражение, а выражение это инструкция, то есть синтаксически корректная конструкция
Примеры: a = 1 a = a * 2 # здесь a увеличивается вдвое a = a * 2 # здесь a увеличивается вдвое еще раз a = a * 2 # и еще раз """ a = a * 2 # и еще раз a = a * 2 # и еще раз a = a * 2 # и еще раз """
# После всех вычислений переменная a примет значение 8

Объект
Объект это композитная конструкция включающая в себя именованные элементы
• Элементы в составе объекта называют атрибутами
• Атрибуты могут быть объектами, функциями или данными элементарных типов
• Для атрибутов-функций введен специальный термин метод
• Для обращения к атрибуту (методу) используется оператор точка a.data = a.add(2)
Метод имеет доступ к атрибутам и методам своего объекта используя аргумент self result = self.data + value
Тип объекта хранится внутри объекта, атрибут __class__

Объекты, классы типы
• Почти все, что есть в языке Питон это объекты
• Объект это воплощение (конкретная реализация) класса
• Kласс это набор свойств, передаваемый объекту при его создании
В Питоне тип объекта и его класс фактически синонимы
Создавая новый класс мы вводим новый тип данных с именем созданного класса
Встроенные в язык типы данных и типы данных введенные стандартной библиотекой реализованы соответствующими классами
• Класс это тоже объект (!), атрибут объекта __class__ это ссылка на объект, являющийся его классом
• Питон поддерживает как процедурный, так и объектно- ориентированный стили программирования
• Внутри интерпретатора программа представлена в виде ориентированного графа, исполнение программы это обход графа


Три фундаментальных конструкции
В основе реализации языка Python лежат три фундаментальных конструкции:
Присваивание
Присваивание это придание имени объекту. Присваивание является реализацией целого ряда операций языка.
Обращение к атрибуту
Обращение к атрибуту это возможность получить доступ к отдельной части составного объекта
Выражение
Важно понимать как и из чего можно составить выражение, как выражение вычисляется, и где выражение можно использовать
Знание этих конструкций критически важно для понимания языка

Файл, модуль, объект
• Файл с текстом программы на Питоне называют модулем
• Файл переданный интерпретатору для исполнения называют главным модулем. Имя главного модуля __main__
• Модуль это объект. Определенные в модуле глобальные переменные это его атрибуты, а функции это его методы. Имена функций также являются глобальными переменными.
• При использовании конструкции вида from math import sin, cos, tan в текущем модуле создаются глобальные переменные sin, cos и tan, которые ссылаются на соответствующие функции из модуля math
• Строго говоря, "глобальная" переменная это переменная уровня модуля. Получить доступ к такой переменной можно только явным использованием импорта.

ЛЕКЦИЯ
Типы данных и операции в языке Python Строки, байты и байтовые массивы

Свойства типа данных
Объект имеющий определенный тип обладает набором свойств.
Часто для простоты говорят тип данных имеет свойство.
Свойства объектов:
• свойство быть изменяемым (mutable) или неизменяемым
(immutable)
• свойство быть перечислимым (enumerable), также используется термин "итерируемый тип"
• свойство быть упорядоченным (sequence) или, другими словами, свойство быть последовательностью
последовательность это итерируемый тип, дополнительно обладающий свойством упорядоченности

Категории типов данных
Встроенные типы данных
• Встроенные типы данных не нужно импортировать явно
• Среди встроенных типов данных есть как простые, так и композитные
Типы данных определяемые пользователем (user-defined)
• Класс созданный программистом становится типом данных для производимых от него объектов
• Вместе с интерпретатором поставляется стандартная библиотека языка
Типы данных включенные в стандартную библиотеку можно рассматривать как типы данных определенные пользователем


Встроенные типы данных
Простые типы данных
• Числа
• Логический тип bool со значениями True и False
• Тип NoneType имеющий единственное значение None
None используется как индикатор отсутствия информации.
Аналогичен указателю NULL в языке C.
• Композитные типы данных

Композитные типы данных
• Коллекции это композитные типы, которые можно рассматривать как совокупность объектов
• Последовательности символов или байт
Строки (неизменяемые последовательности символов)
Байты (неизменяемые последовательности байт)
Байтовые массивы (изменяемые последовательности байт)
Все элементы последовательности символов или байт имеют один и тот же тип
• Другие встроенные коллекции
Списки (в других языках это массивы), литерал [ ]
Кортежи (неизменяемые списки), литерал ( )
Словари и множества (в других языках словарь это ассоциативный массив, хэш или map), литерал { }
Списки, кортежи, словари и множества могут содержать элементы разных типов
Объекты имеющие тип класса созданного пользователем также могут быть коллекциями

Литералы
• Литерал это "буквальная" запись содержимого объекта oЧисловые литералы аналогичны литералам языка C:
Десятичные 45
Шестнадцатеричные 0x45
Восьмеричные 0o45 (в языке C 045)
Двоичные 0b1101 (в языке C начиная со стандарта C++14) o Текстовые литералы (строки):
'abc\ndef' # литерал в одинарных кавычках
"abc\ndef" # литерал в двойных кавычках
литерал в трех кавычках допускает перенос строки:
"""abc '''abc # Четыре литерала-строки на этом слайде содержат def""" def''' # одинаковые последовательности символов
литералы в одинарных кавычках и литералы в двойных кавычках имеют одинаковые свойства

Числа
• Целые числа, разрядность не ограничена
• Числа с плавающей запятой
• Числа с фиксированной запятой (класс Decimal)
• Рациональные числа или дроби (класс Fraction)
• Комплексные числа
• Встроенные функции (built-in call) позволяют осуществлять преобразование к нужному типу:
a = 25 + int("28") => 53
b = str(25) + "28" => "2528"
c = 3 + int(2.8) # => 5
• Примеры числовых литералов:
123, 0x123, 0o123, 0b1101
1.23, 12., .12, 1.2e3, 1.2+3.4j, 3.4J

Операторы и операции
• Инструкция это одно из элементарных действий, последовательность которых составляет программу
• Операция это действие над объектами или объектом, совершаемое при вычислении выражения
• Оператор это символ или зарезервированное слово для обозначения операции
• Большая часть операторов языка двуместные:
a + b # сложение, коммутативная операция
a - b # вычитание, некоммутативная операция
• Одноместные операторы, например:
-x # унарный минус
• Трехместный оператор x if y else z аналогичен оператору ?: языка C
значение_если_да if вопрос else значение_если_нет # Питон
вопрос ? значение_если_да : значение_если_нет # Язык C