НОЧУ ДПО "Национальный открытый университет "ИНТУИТ"
Опубликован: 24.01.2021 | Доступ: свободный | Студентов: 1233 / 22 | Длительность: 03:57:00
Лекция 1:

Введение

Лекция 1

Смотреть на youtube

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

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

Появлению этого курса, приводимых здесь лекций, предшествовал видео курс, который я записал в YouTube. Каждой лекции этого курса соответствует видео лекция, доступная на моем канале - Vladimir Billig. У видео лекций есть свое очарование - возможность послушать, как автор объясняет суть лекции. Но многие хотят иметь возможность работать с текстом лекции, который можно читать неспеша, обдумывая прочитанное. Поэтому для меня важно было, чтобы этот курс появился на сайте Интуит- университета. Тексты лекций и видео близки, но, располагая курс на сайте университета, я отредактировал текст, исправляя некоторые ошибки, допущенные при чтении видео курса.

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

Для кого эта книга

Эта книга ориентирована на людей, умеющих программировать и обладающих алгоритмическим мышлением, на тех программистов, кому потребовалось написать проект на новом для них языке программирования Python. Она для тех активных программистов, кто работает на других языках, но кто решил освоить современный и популярный язык программирования Python.

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

Каждый настоящий программист должен иметь в своем арсенале набор языков программирования и без особого труда переходить от программирования на одном языке, в одной среде разработки к другой среде, к другому языку программирования. Эта книга для таких программистов.

Конечно есть приверженцы одного языка - "Питонисты", "Сишники", "Сишарпники", "Смоллтоковцы", "Котлинцы" - приверженцы одной операционной системы и среды разработки, которые знают массу деталей, тонкостей языка и среды разработки, которые уверены, что лучше их языка нет и быть не может и могут написать на этом языке весьма элегантные программы. Я не принадлежу к такой категории программистов и не знаком со всеми закоулками Python.

За свою долгую жизнь программиста я писал проекты на десятке разных языков программирования. Твердо знаю, что на любом языке программирования хороший программист может создать качественный проект. К сожалению, на любом языке программирования пишутся проекты низкого качества.

Чтобы написать роман "Война и мир", недостаточно знать русский язык, нужно быть писателем таким, каким был Лев Толстой. Известны случаи, когда писатели должны были покинуть родную среду обитания, сменить язык, на котором они создавали свои произведения. Примеров немало - Владимир Набоков, Иосиф Бродский, Чингиз Айтматов, - создавали свои прекрасные произведения на двух языках.

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

Почему Python

При обучении студентов программированию на первом курсе в качестве рабочего языка программирования я учу языку C#, а в качестве среды разработки - Visual Studio. Фирма Microsoft предоставляет лицензионные, свободно распространяемые версии этих продуктов, понимая, что в будущем это окупится сторицей. Язык C# является современным, широко используемым в реальных больших проектах, языком объектно-ориентированного программирования. В сочетании со средой разработки язык позволяет создавать проекты, отвечающие всем принципам качественного программирования.

На старших курсах студентов полезно знакомить с другими средами программирования и другими языками. Сегодня, я полагаю, вторым языком должен быть язык Python, не только потому, что в некоторых рейтингах популярности языков программирования этот язык занимает первое место. Мода, в том числе мода и на язык программирования, вещь преходящая. Языку Python уготована долгая жизнь. Лет 10 назад при первом знакомстве с этим языком я полагал, что это просто язык, вошедший в моду, обладающий серьезными недостатками, язык, который долго не просуществует.

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

Python сумел превратить недостаток в достоинство!

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

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

Язык Python привлекателен и для тех, кто пишет небольшие программы, не требующие высокой эффективности. Сегодня во многих школах при обучении программированию переходят на язык Python, что позволяет школьникам достаточно просто писать программы начального уровня. Недаром в задачах ЕГЭ, когда приводятся примеры программ, наряду с программами на языках Pascal и Basic включается и программа на Python.

Цель курса

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

История создания языка

Справка из Википедии

Автор языка Python - Гвидо Ван Россум - нидерландский программист. В конце 1980-х годов он работал над созданием распределенной ОС Ameoba, для которой требовался расширяемый скриптовый язык. Гвидо начал работать над созданием нового языка программирования, используя некоторые идеи, заимствованные у языка ABC, в разработке которого Гвидо принимал участие. Так появился язык программирования Python, изначально проектируемый как объектно-ориентированный язык.

Заметим, что и язык программирования С также является потомком языка ABC.

На русском языке язык Python, как и змею, являющуюся символом языка, часто называют "Питон". Но язык назван в честь любимого Гвидо телевизионного шоу "Летающий цирк Монти Пайтона" и потому название языка часто произносят как "Пайтон". В феврале 1991 года Гвидо опубликовал исходный текст языка в группе новостей alt.sources. С тех пор язык активно развивался благодаря усилиям сообщества программистов. Развитие языка тем не менее шло под непосредственным руководством Гвидо Ван Россума, который в сообществе Python программистов был известен как " великодушный пожизненный диктатор" проекта, принимающий окончательные решения. С июля 2018 года Гвидо ушел в постоянный отпуск от диктаторства, оставив за собой право быть обычным разработчиком.

Реализации языка

Официальная реализация версий языка, создаваемая сообществом, и соответствующая документация доступны на сайте Python.org. К моменту написания этого текста последней стабильной реализацией является реализация Python 3.8. Основной реализацией является реализация, написанная на языке С, - CPython, которая рассматривается как стандарт языка.

Реализации языка существуют для всех распространенных операционных систем - Microsoft Windows, практически для всех Unix вариаций - Linux, FreeBSD и других вариантов, для Max OS, Android и других мобильных систем. Помимо CPython существуют и другие реализации:

  • JPython - версия Python, использующая JVM как среду исполнения. Позволяет использовать Java-библиотеки.
  • IronPython - версия Python для .NET Framework и Mono. Предоставляет полную интеграцию с .NET-системой, так как компилирует программы, написанные на Python, в MSIL.
  • Python for .NET - еще одна версия Python для .NET. Основное отличие заключается в том, что код программы не компилируется в MSIL. Эта реализация предоставляет интерпретатор, написанный на C#, она позволяет использовать .NET сборки из кода программы, написанной на языке Python.
  • Stackless - версия, не являющаяся полноценной, написанная на Си. Предоставляет расширенные возможности многопоточного программирования и большую глубину рекурсии.
  • PyPy - реализация Python, написанная на Python. В этой версии помимо CPython включены возможности Stackless и Psyco. Имеет возможности анализа кода и трансляции в другие языки и байткоды виртуальных машин.

Как работать с реализациями 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). Вот как выглядит интерактивный сеанс классического приветствия, когда вначале приветствуется мир, а затем приветствуется пользователь:

Запуск сеанса "Приветствие" в интерактивном режиме

Рис. 1. Запуск сеанса "Приветствие" в интерактивном режиме

Кроме ввода - вывода строк и операции конкатенации (сцепления строк) некоторый интерес в этом примере представляет введение переменной name, которая получает значение, прочитанное с консоли.

Второй пример. Простая задача

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

 Сеанс "Вычисление суммы" в интерактивном режиме

Рис. 2. Сеанс "Вычисление суммы" в интерактивном режиме

Для программистов, имеющих опыт, приводимый текст кода должен быть понятен. Для начинающих программистов в следующих главах будут даны соответствующие пояснения.

Приведу краткий комментарий к процессу выполнения программы в интерактивном режиме:

  • Если в ответ на приглашение (" >) вводится выражение, то вычисленное значение выражения выводится на консоль (экран).
  • При вводе оператора присваивания вычисленное значение выражения правой части присваивается переменной.
  • Если значение требуется получить от пользователя, как в примере: name = input(), то пользователь вводит значение, которое получает переменная.
  • При вводе сложных многострочных операторов - выбора, цикла - оператор вводится полностью. Признаком конца оператора является ввод пустой строки. После завершения ввода происходит интерпретация соответствующего оператора и его выполнение.
  • При определении функции ее текст вводится полностью, создается код, соответствующий определению, который выполняется при вызовах этой функции.

Функция, вычисляющая сумму элементов массива, написанная на Python, состоит из 5-и коротких строк. Полезно сравнить ее текст с соответствующим текстом функции, написанной на языке C#:

int Sum(int[] x)
        {
            int s = 0;
            foreach (int item in x)
                s += item;
            return s;
  }

По сути, тексты очень близки. Текст на Python имеет меньше строк и строки короче. Текст на C# более информативен, поскольку явно расставлены скобки, указаны типы объектов, но некоторым программистам стиль Python может казаться предпочтительным.

Третий пример. Простой проект

В процессе интерактивного сеанса работы программа выполняется, но не сохраняется для повторного использования. Однако, при работе в оболочке можно создать сохраняемый и многократно выполняемый код. Наш пример демонстрирует эту возможность. Для этого достаточно в оболочке создать проект, содержащий один модуль. В Python, также как в С++, файл, включаемый в проект, играет роль модуля. Поэтому достаточно в оболочке в главном меню выбрать пункт File | New File, в результате файл будет создан и открыт для записи программного кода. Файл можно сохранить, при сохранении он получает уточнение .py. Если предварительно файл не был сохранен, то при попытке выполнения кода среда потребует сохранения файла.

Модульности проектов Python и деталям построения модулей будет посвящена отдельная глава. Сейчас же приведем текст простого модуля, повторяющего по сути предыдущий пример. Небольшое отличие лишь в том, что наряду с определением функции, вычисляющей сумму элементов списка, для тестирования строятся две процедуры без параметров, которые вызываются при запуске модуля на выполнение. Вот текст этого модуля:

 Модуль Simple_1, вычисляющий сумму

Рис. 3. Модуль Simple_1, вычисляющий сумму

Что происходит при запуске сохраненного модуля Simple_1.py? Он начинает работать, результаты вычисляются, выводятся на экран, сеанс заканчивается и экран с результатами закрывается. Все происходит мгновенно. Последний выполняемый оператор input добавлен для того, чтобы сеанс не закончился и результаты можно было увидеть. Вызов input требует ввода от пользователя, поэтому интерпретатор не заканчивает работу, а входит в режим ожидания. Конечно, можно открыть модуль в режиме редактирования - IDLE Edit. В этом случае модуль можно редактировать и наблюдать за его выполнением.

Четвертый пример. Простой проект, создаваемый в Visual Studio 2019

Откроем Visual Studio 2019 и создадим приложение Python. Как всегда, при создании нового проекта в студии будет создано решение (Solution), которому дано имя Simple_2. Решение содержит проект Python с тем же именем. В этом проекте автоматически строится модуль (файл) с именем Simple_2. py. При открытии проекта в студии показан файл, в который можно добавлять код. Я не стал придумывать ничего нового и скопировал код проекта Simple_1, изменив лишь слегка комментарий. Вот как выглядит проект, открытый в студии:

 Проект Simple_2, открытый в Visual Studio 2019

Рис. 4. Проект Simple_2, открытый в Visual Studio 2019

Конечно, работать с проектом в Visual Studio намного удобнее. Вот лишь некоторые из преимуществ:

  1. Облегчается отладка, поскольку появляется возможность:
    • задавать точки останова,
    • пошагового исполнения,
    • наблюдения за переменными.
  2. Добавлять в проект новые элементы.
  3. Добавлять в Решение новые проекты.
  4. Сохранение и запуск проекта выполняется без всяких проблем, поскольку хранится не только файл Simple_2. py, но и файл проекта и файл решения.

Разработчику, привыкшему работать с проектами в студии, конечно, привычнее и удобнее работать с проектами на Python также, как и с проектами на любых других языках программирования, используя возможности студии разработки. В этом курсе работа с проектами в Visual Studio - это основной стиль работы с создаваемыми проектами.

Лекция 1
Елена Лаптева
Елена Лаптева

Думаю. что не смогу его закончить. Хотелось предупредить других - не тратьте зря время, ищите другой курс.

Михаил Сидоров
Михаил Сидоров

Если S - последовательность, то срез задается как S(i : j) и содержит j - i элементов,

а в примере используютс другие скобки - 

NL[1:3] = ["решили", "не", "искать"]

или это не срез, тогда, что это?