- Введение
- Смотреть на youtube
- Для кого эта книга
- Почему Python
- Цель курса
- История создания языка
- Как работать с реализациями Python
- Язык Python и его особенности
- 1.1 Общие сведения о языке
- 1.2 Типы и структуры данных
- 1.2.1 Типы данных
- 1.2.2 Структуры данных
- Введение в программирование на языке Python
- Встроенные типы данных
- Тип int и long
- Тип float
- Тип complex
- Тип bool
- Тип string и тип unicode
- Тип tuple
- Видео
Введение
Смотреть на youtube
Для кого эта книга
Эта книга ориентирована на людей, умеющих программировать и обладающих алгоритмическим мышлением, на тех программистов, кому потребовалось написать проект на новом для них языке программирования Python. Она для тех активных программистов, кто работает на других языках, но кто решил освоить современный и популярный язык программирования Python.
Она может быть полезной и для тех, кто только начинает свой путь в программисты и Python является для них первым языком программирования.
Каждый настоящий программист должен иметь в своем арсенале набор языков программирования и без особого труда переходить от программирования на одном языке, в одной среде разработки к другой среде, к другому языку программирования. Эта книга для таких программистов.
За свою долгую жизнь программиста я писал проекты на десятке разных языков программирования. Твердо знаю, что на любом языке программирования хороший программист может создать качественный проект. К сожалению, на любом языке программирования пишутся проекты низкого качества.
Почему Python
На старших курсах студентов полезно знакомить с другими средами программирования и другими языками. Сегодня, я полагаю, вторым языком должен быть язык Python, не только потому, что в некоторых рейтингах популярности языков программирования этот язык занимает первое место. Мода, в том числе мода и на язык программирования, вещь преходящая. Языку Python уготована долгая жизнь. Лет 10 назад при первом знакомстве с этим языком я полагал, что это просто язык, вошедший в моду, обладающий серьезными недостатками, язык, который долго не просуществует.
Python сумел превратить недостаток в достоинство!
Действительно, никто не пишет большие проекты на чистом Python. Все реальные проекты создаются на основе пакетов Python. Пакеты Python пишутся на компилируемых языках, часто на языке С или С++, что позволяет создавать высокоэффективные программы. Переменные Python, не имеющие фиксированного типа, достаточно просто связываются с объектами, созданными в пакетах, написанных на других языках. Таким образом язык Python служит клеем, соединяющим возможности разных пакетов.
Сегодня пакеты Python разработаны для самых востребованных прикладных областях, таких как нейронные сети, глубокое обучение, распознавание образов, обработка текстов на естественных языках, параллельные вычисления и многое, многое другое. Число пакетов только растет. Наличие этих пакетов гарантирует долгую жизнь языку Python.
Язык Python привлекателен и для тех, кто пишет небольшие программы, не требующие высокой эффективности. Сегодня во многих школах при обучении программированию переходят на язык Python, что позволяет школьникам достаточно просто писать программы начального уровня. Недаром в задачах ЕГЭ, когда приводятся примеры программ, наряду с программами на языках Pascal и Basic включается и программа на Python.
Цель курса
Главная задача этого учебного курса состоит в том, чтобы познакомить с основами языка Python.
История создания языка
Справка из Википедии
Заметим, что и язык программирования С также является потомком языка ABC.
На русском языке язык Python, как и змею, являющуюся символом языка, часто называют «Питон». Но язык назван в честь любимого Гвидо телевизионного шоу «Летающий цирк Монти Пайтона» и потому название языка часто произносят как «Пайтон». В феврале 1991 года Гвидо опубликовал исходный текст языка в группе новостей alt.sources. С тех пор язык активно развивался благодаря усилиям сообщества программистов. Развитие языка тем не менее шло под непосредственным руководством Гвидо Ван Россума, который в сообществе Python программистов был известен как » великодушный пожизненный диктатор» проекта, принимающий окончательные решения. С июля 2018 года Гвидо ушел в постоянный отпуск от диктаторства, оставив за собой право быть обычным разработчиком.
Реализации языка
Как работать с реализациями Python
Язык Python является интерпретируемым языком. Программу на Python можно непосредственно создавать и выполнять в интерактивном сеансе работы. Существуют конечно и другие возможности создания и выполнения программ Python. Многое определяется тем, с какой реализацией языка и в какой среде программирования происходит работа.
У меня на компьютере установлена 64-х битная версия Python 3.7.5, которую я иногда вызываю для непосредственного выполнения Python программ в интерактивном режиме интерпретации. Но в основном я работаю с программами Python, создаваемыми в среде программирования Visual Studio 2019, которая включает две реализации: IronPython и стандартную реализацию Python. Примеры, приведенные в данном курсе, созданы в Visual Studio 2019 для стандартной реализации Python.
Первые примеры, приводимые ниже, демонстрируют возможность создания и выполнения программ Python в интерактивном сеансе работы.
Первый пример. Классическое приветствие, создаваемое на Python 3.7.5
Я запустил оболочку Python (IDLE Python 3.7). Вот как выглядит интерактивный сеанс классического приветствия, когда вначале приветствуется мир, а затем приветствуется пользователь:
Второй пример. Простая задача
Напишем на Питоне простую задачу вычисления суммы элементов массива и запустим ее в оболочке в интерактивном режиме. Чтобы наше решение было похоже на серьезную задачу и могло демонстрировать разные аспекты ввода программного кода, вначале определим функцию, вычисляющую сумму, а потом покажем, как она вызывается
Для программистов, имеющих опыт, приводимый текст кода должен быть понятен. Для начинающих программистов в следующих главах будут даны соответствующие пояснения.
Приведу краткий комментарий к процессу выполнения программы в интерактивном режиме:
Функция, вычисляющая сумму элементов массива, написанная на Python, состоит из 5-и коротких строк. Полезно сравнить ее текст с соответствующим текстом функции, написанной на языке C#:
По сути, тексты очень близки. Текст на Python имеет меньше строк и строки короче. Текст на C# более информативен, поскольку явно расставлены скобки, указаны типы объектов, но некоторым программистам стиль Python может казаться предпочтительным.
Третий пример. Простой проект
Модульности проектов Python и деталям построения модулей будет посвящена отдельная глава. Сейчас же приведем текст простого модуля, повторяющего по сути предыдущий пример. Небольшое отличие лишь в том, что наряду с определением функции, вычисляющей сумму элементов списка, для тестирования строятся две процедуры без параметров, которые вызываются при запуске модуля на выполнение. Вот текст этого модуля:
Четвертый пример. Простой проект, создаваемый в Visual Studio 2019
Откроем Visual Studio 2019 и создадим приложение Python. Как всегда, при создании нового проекта в студии будет создано решение (Solution), которому дано имя Simple_2. Решение содержит проект Python с тем же именем. В этом проекте автоматически строится модуль (файл) с именем Simple_2. py. При открытии проекта в студии показан файл, в который можно добавлять код. Я не стал придумывать ничего нового и скопировал код проекта Simple_1, изменив лишь слегка комментарий. Вот как выглядит проект, открытый в студии:
Конечно, работать с проектом в Visual Studio намного удобнее. Вот лишь некоторые из преимуществ:
Язык Python и его особенности
1.1 Общие сведения о языке
В основном Python используется как интерпретатор, хотя существуют средства компиляции Python-программ.
Интерпретатор Python позволяет выполнять команды и операции средствами интерактивной оболочки Python (см. далее).
Python — объектно-ориентированный язык. Программные модули и структуры данных могут использоваться как объекты, т.е. имеют свойства и методы.
Подпрограммы в Python оформляются только как функции, но эти функции могут не возвращать значений, а могут возвращать несколько значений в виде структур данных.
Функции, оформленные по определённым правилам, объединяются в модули (библиотеки функций). Модули (или некоторые функции из модулей) по мере необходимости подключаются к пользовательским программам. Такой подход позволяет экономить память вычислительной системы и не занимать её ненужным кодом.
Модули подключаются в начале программы с помощью команды:
А отдельные функции — с помощью команды:
Присваивание в Python обозначается знаком » = «, а равенство — знаком » == «.
И наконец, элементы структуры данных могут иметь отрицательные номера.
В следующих главах этой части даётся неполное и полуформальное введение в Python. Этого материала достаточно для выполнения заданий в пределах школьного курса. Для желающих узнать больше имеется список источников информации (раздел «Литература») и справка Python.
1.2 Типы и структуры данных
1.2.1 Типы данных
1.2.1.1 Числа
Числа в Python могут быть обычными целыми (тип int ), длинными целыми (тип long ), вещественными (тип float ) и комплексными (они не будут рассматриваться и использоваться). Для всех задач в пределах школьного курса используются только целые и вещественные числа.
Для преобразования чисел из вещественных в целые и наоборот в Python определены функции int() и float(). Например, int(12.6) даст в результате 12, а float(12) даёт в результате 12.0 (десятичный разделитель — точка). Основные операции с числами приведены в табл. 1.1.
1.2.1.2 Логические значения
Логические значения в Python представлены двумя величинами — логическими константами True (Истина) и False (Ложь).
Логические значения получаются в результате логических операций и вычисления логических выражений.
1.2.2 Структуры данных
В Python определены такие структуры данных (составные типы) как последовательности и отображения (называемые также словарями). Словари позволяют устанавливать связи (ассоциации) «ключ—значение» (например, «Фамилия—Адрес»), поэтому с их помощью создаются так называемые ассоциативные массивы. В нашем курсе не будут рассматриваться словари и подробности их применения, а для создания ассоциативных массивов будут использоваться другие структуры данных.
Последовательности, в свою очередь, подразделяются на изменяемые и неизменяемые. Под изменяемостью (изменчивостью) последовательности понимается возможность добавлять или удалять элементы этой последовательности (т.е. изменять количество элементов последовательности).
Для структур данных в Python определены функции (операции) и методы, принципиального различия между которыми нет, а есть различие синтаксическое (в правилах написания). Основные функции и методы для каждого типа структур данных приводятся ниже.
1.2.2.1 Неизменяемые последовательности — строки
Строки (последовательности символов — букв и других значков, которые можно найти на клавиатуре компьютера) могут состоять из символов английского и любого другого алфавита. Для простоты и определённости в строковых значениях переменных в дальнейшем будем использовать только символы английского алфавита. В Python строки и символы нужно заключать в кавычки (одиночные или двойные). Элементы (символы) в строке нумеруются, начиная с нуля. Одиночный символ — буква — является «с точки зрения Python» строкой, состоящей из одного элемента.
Максимально возможное количество символов в строке (длина строки) в Python ограничивается только доступным объёмом памяти. Так что текст любого разумного размера (например, несколько тысяч страниц) может быть записан в одну строку Python.
1.2.2.2 Неизменяемые последовательности — кортежи
Кортеж в Python — это упорядоченный набор объектов, в который могут одновременно входить объекты разных типов (числа, строки и другие структуры, в том числе и кортежи). В дальнейшем эти объекты будем называть элементами кортежа.
Кортеж задаётся перечислением его элементов в круглых скобках через запятую, например
С использованием допустимой в Python цепочки присваиваний можно элементам кортежа сразу сопоставить какие-нибудь переменные:
Кортеж может быть пустым (для его определения нужно написать t=() ), а может содержать только один элемент (например, t=(‘domik’,) ). Для кортежа из одного элемента обязательно добавлять запятую после имени или значения этого элемента.
Кортежи могут получаться в результате работы функций Python, например, уже упоминавшаяся функция divmod() возвращает кортеж из двух элементов.
Кортежи могут использоваться для хранения характеристик каких-нибудь предметов, существ или явлений, если эти предметы, существа или явления характеризуются фиксированным набором свойств. Например, в виде кортежа можно записать фамилию ученика и его оценки за полугодие.
Поскольку кортежи являются неизменяемыми последовательностями, операции с кортежами не меняют исходные кортежи.
1.2.2.3 Изменяемые последовательности — списки
Список в Python — это упорядоченный набор объектов, в список могут одновременно входить объекты разных типов (числа, строки и другие структуры, в частности, списки и кортежи). Объекты, входящие в список, будем в дальнейшем называть элементами списка.
Самый наглядный способ создания списка — перечислить его элементы в квадратных скобках через запятую, например:
В дальнейшем в именах списков всегда будем использовать сочетание lst(от слова «list», т.е. «список»).
С использованием допустимой в Python цепочки присваиваний можно элементам списка сразу сопоставить какие-нибудь переменные:
Список может быть пустым (создать его можно так: lst=[] ), а может содержать только один элемент (например, lst=[‘domik’] ).
Обратите внимание, что строка интерпретируется как список!
Важно понимать, что при определении значений минимального и максимального элементов списка также используется «словарный» порядок — сначала идут числа по возрастанию, затем строки, начинающиеся на цифры в порядке их возрастания, затем строки, начинающиеся на прописные буквы в алфавитном порядке, а затем строки, начинающиеся на строчные буквы также в алфавитном порядке.
Списки в Python, как и строки, являются объектами, поэтому для списков существуют методы.
Функция zip() позволяет получить из элементов различных списков список кортежей, состоящих из соответствующих элементов списков. Аргументами функции zip() являются два или более списков, а результатом — список кортежей, составленных из элементов исходных списков с одинаковыми номерами (первый кортеж составляется из элементов с номером 0, второй — из элементов с номером 1 и т.д.)
Количество элементов в итоговом списке равно количеству элементов в самом коротком исходном списке. «Лишние» элементы других списков игнорируются.
Функцию zip() можно применять и к кортежам, а также «смешивать» в её аргументах списки и кортежи.
При создании lambda-функции указывается ключевое слово lambda, затем пишутся переменные, для которых эта функция определяется и операции с этими переменными (что функция делает с переменными).
После описания lambda-функции, которая является первым аргументом функции map() пишутся остальные аргументы — имена списков (кортежей), с которыми надо выполнить операцию.
Введение в программирование на языке Python
Встроенные типы данных
Как уже говорилось, все данные в Python представлены объектами. Имена являются лишь ссылками на эти объекты и не несут нагрузки по декларации типа. Значения встроенных типов имеют специальную поддержку в синтаксисе языка: можно записать литерал строки, числа, списка, кортежа, словаря (и их разновидностей). Синтаксическую же поддержку операций над встроенными типами можно легко сделать доступной и для объектов определяемых пользователями классов.
Следует также отметить, что объекты могут быть неизменчивыми и изменчивыми. Например, строки в Python являются неизменчивыми, поэтому операции над строками создают новые строки.
Карта встроенных типов (с именами функций для приведения к нужному типу и именами классов для наследования от этих типов):
Тип int и long
Два типа: int (целые числа) и long (целые произвольной точности) служат моделью для представления целых чисел. Первый соответствует типу long в компиляторе C для используемой архитектуры. Числовые литералы можно записать в системах счисления с основанием 8, 10 или 16:
Стоит заметить, что если в результате операции получается значение, выходящее за рамки допустимого, тип int может быть неявно преобразован в long :
Тип float
Соответствует C-типу double для используемой архитектуры. Записывается вполне традиционным способом либо через точку, либо в нотации с экспонентой:
Для финансовых расчетов лучше применять более подходящий тип.
Тип complex
Литерал мнимой части задается добавлением j в качестве суффикса (перемножаются мнимые единицы ):
Тип bool
Тип string и тип unicode
Обычно такие строки требуются для записи регулярных выражений (о них пойдет речь в лекции, посвященной обработке текстовой информации).
Набор операций над строками включает конкатенацию » + «, повтор » * «, форматирование » % «. Также строки имеют большое количество методов, некоторые из которых приведены ниже. Полный набор методов (и их необязательных аргументов) можно получить в документации по Python.
Некоторые методы строковых объектов будут рассмотрены в лекции, посвященной обработке текстов.
Тип tuple
Для представления константной последовательности (разнородных) объектов используется тип кортеж. Литерал кортежа обычно записывается в круглых скобках, но можно, если не возникают неоднозначности, писать и без них. Примеры записи кортежей:
Использовать синтаксис кортежей можно и в левой части оператора присваивания. В этом случае на основе вычисленных справа значений формируется кортеж и связывается один в один с именами в левой части. Поэтому обмен значениями записывается очень изящно:
Видео
Python с нуля. Урок 1 | Первая программа. ПеременныеСкачать
Учим Python за 1 час! #От ПрофессионалаСкачать
Учим python за 7 часов! Уроки Python Полный курс обучения программированию на python с нуляСкачать
Создаем свой ЯЗЫК ПРОГРАММИРОВАНИЯ. Лексер, Парсер, Абстрактное синтаксическое дерево (AST)Скачать
Язык программирования Python. Илария БеловаСкачать
Где используется язык Python || Области и сферы применения языка pythonСкачать
Язык программирования Python - что на нем пишут, сколько за него платятСкачать
8 класс Oсновы программирования PythonСкачать
Почему язык программирования Python захватывает мир? Особенности и обзор (мой опыт)Скачать
Лекция 5: Протокол CGI. Шаблонизация. Языки программирования Python и JavaScriptСкачать