Основы Python

Курс основ программирования на языке Python с нуля. Рассмотрены базовые вещи; после прочтения вы способны написать на Python большую часть программ.

Магические методы

Помимо обычных методов класса, в python имеются методы, которые, как правило, не вызываются напрямую, а вызываются встроенными функциями или операторами.

Например, метод __init__ перегружает конструктор класса. Конструктор - создание экземпляра класса.

>>> class A:
...     def __init__(self, name):
...         self.name = name
...
>>> a = A('Vasya')
>>> print(a.name)
Vasya

Список всех доступных магических …

Объектно-ориентированное программирование. Классы, объекты

Объектно-ориентированное программирование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

Класс — тип, описывающий устройство объектов. Объект — это экземпляр класса. Класс можно сравнить с чертежом, по которому создаются объекты.

Python соответствует принципам объектно-ориентированного программирования. В Python всё является объектами - строки, списки, словари, файлы, всё остальное.

Кроме того …

Импорт и создание модулей

Допустим, мы хотим вычислить синус числа.

Встроенной функции, которая делает это, в Python нет; а писать самому - занятие ненужное. Зато такая функция есть во встроенном модуле math.

Модулем в Python называется любой файл с программой (да-да, все те программы, которые мы писали в прошлых лекциях, можно назвать модулями).

Каждая программа …

Конструкция with - as: менеджер контекста

Конструкция with - as используется для оборачивания выполнения блока инструкций менеджером контекста. Часто это более удобная конструкция, чем изученная ранее try-except-finally.

Синтаксис конструкции with ... as:

"with" expression ["as" target] ("," expression ["as" target])* ":"
    suite

Если в конструкции with - as было несколько выражений, то это эквивалентно нескольким вложенным конструкциям:

with A() as a …

Работа с файлами: чтение, запись, редактирование

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

Прежде, чем работать с файлом, его надо открыть. Открыть файл можно с помощью встроенной функции open:

f = open('pyplanet.txt', 'r', encoding='utf-8' …

Конструкция try - except для обработки исключений

Допустим, нам нужно написать функцию, которая возвращает частное от деления двух чисел; и ноль, если деление не удалось.

Кажется легко, верно? Давайте напишем код:

def division(x, y):
    return x / y

И вызовем его

>>> print(division(1, 0))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File …

Области видимости; инструкции global, nonlocal

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

Например, в приведённом ниже коде:

def add(x, y):
    return x + y

a = 1
b = 2
print(add(a, b))

Где существуют x и y? Ответ: только внутри функции add …

Функции с переменным числом аргументов; args, kwargs

Допустим, мы хотим написать функцию, которая выводит среднее арифметическое всех своих аргументов. Мы можем, используя предыдущие знания, написать эту функцию, например, для трёх аргументов:

def mean(elem1, elem2, elem3):
    return (elem1 + elem2 + elem3) / 3

Или для четырёх. Или для двух. Но только для какого-то конкретного известного заранее количества аргументов

Можно …

Анонимные lambda-функции

Мы разобрались, как писать функции с помощью def, однако это не всегда удобно.

Например, есть метод sort у списков, который сортирует список. У него есть аргумент key - это функция, которая применяется к каждому элементу и возвращает значение для сортировки.

Например, попробуем отсортировать список по модулю числа (модуль числа - это само …

Функции, директивы def, return

Часто некоторый код нужно выполнить несколько раз. Либо мы хотим как-то изолировать некоторый код, и вызывать его в необходимом месте.

Этого можно достичь написанием функции.

Функция в python - объект, принимающий аргументы и возвращающий значение. Обычная функция определяется с помощью инструкции def.

Определим простейшую функцию:

def add(x, y):
    return x …

Форматирование строк

Иногда нужно напечатать строку, в которой присутствует пользовательский ввод. Например, напечатать "Привет, name", где name - это введённое пользователем имя.

Можно это сделать с помощью конкатенации строк, например:

name = input("Как вас зовут?")
print("Привет, " + name)

Однако, если строки станут сложнее, и подстановок станет больше, то выражение, получающееся при применении всех …

Словари

Словари в Python - это отображение хэшируемых элементов (ключей) на объекты (значения).

Создадим словарь:

dictionary = {1: 1, 2: 4, 3: 9, "hello": "pyplanet"}

Пустой словарь можно также создать с помощью литерала:

empty = {}

Ключи работают так же, как и элементы множества:

  • Уникальны
  • Неизменяемы

Помните, у нас была задача на каждый вопрос дать …

Множества (set и frozenset)

Что такое множества в Python? Это контейнер, содержащий неповторяющиеся элементы. Этот тип данных похож на математическое множество.

Множество (в математике) — одно из ключевых понятий математики, представляющее собой набор, совокупность каких-либо объектов — элементов этого множества. Два множества равны тогда и только тогда, когда содержат в точности одинаковые элементы.

Допустим, пользователь вводит …

Распаковка элементов

Допустим, есть задача: обменять значения двух переменных. Например, a = 5, b = 10. Нам нужно, чтобы стало a = 10, b = 5.

Можно это сделать через введение временной переменной:

a = 5
b = 10

tmp = a
a = b
b = tmp

А можно воспользоваться инструментом распаковки элементов кортежа / списка. Но для начала о том …

Кортежи

В этой статье мы поговорим о таком типе данных в Python, как кортежи (tuple).

Кортежи - почти как изученные нами ранее списки, за исключением того, что они неизменяемы.

Как создаётся кортеж?

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

a = (1, 2, 3, 0, -1 …

Строки

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

Литералы строк

Что такое литерал? Литерал (англ. literal), или безымянная константа — запись в исходном коде компьютерной программы, представляющая собой фиксированное значение.

Когда …

Срезы массивов

Иногда необходимо выбрать подмножество массива: убрать первые или последние элементы, выбрать только чётные или нечётные элементы.

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

Этот …

range

Например, дана задача: в массиве чисел к каждому элементу прибавить его индекс. Можно эту задачу решить через цикл while, но всё же хотелось бы через for.

Вот пример решения через цикл for:

array = [1, 5, -2, 8, 0, 2]
index = 0
for element in array:
    print(element + index)
    index = index …

Цикл for

Вроде бы нам известен цикл while, зачем нам ещё и цикл for?

Возьмём код из предыдущей лекции, где мы просто печатали элементы массива:

array = [1, 2, 3, 0, 1.4, -2]
index = 0
while index < len(array):
    print(array[index])
    index = index + 1

Здесь есть несколько моментов, которые будут повторяться …

Массивы, они же списки

Массив — структура данных, хранящая набор значений (элементов массива), идентифицируемых по индексу или набору индексов, принимающих целые (или приводимые к целым) значения из некоторого заданного непрерывного диапазона.

Массивы нужны для удобного хранения и обработки данных.

В Python массивы реализованы списками (list) и кортежами (tuple).

На самом деле, ни список, ни кортеж …

Операторы break и continue, слово else в циклах

Оператор break

А теперь допустим, что нам нужно вывести для введённого числа его минимальный делитель, отличный от единицы (делитель - это такое число, на которое данное делится без остатка, например, для числа 15 делителями являются 1, 3, 5, 15).

Пользуясь лишь знаниями, полученными ранее, можно написать следующий код для решения данной …

Цикл while

Допустим, нам необходимо напечатать значения квадратов натуральных чисел. Скажем, от 1 до 10 (квадрат числа - это число, умноженное само на себя).

Можно это сделать по-простому:

print(1 ** 2)
print(2 ** 2)
print(3 ** 2)
print(4 ** 2)
print(5 ** 2)
print(6 ** 2)
print(7 ** 2)
print(8 ** 2)
print …

Множественный условный оператор Switch - case

Допустим, мы хотим написать простейшую систему вопрос - ответ. У нас есть заранее известный список потенциальных вопросов и ответов на них.

Безусловно, можно решить эту задачу, используя конструкцию if-elif-else, но появилась несколько более удобная конструкция для решения подобных задач.

Решение с помощью if-elif-else:

question = input()
if question == "Привет?":
    print("Привет!")
elif …

Условия и условные операторы

Допустим, если пользователь ввёл "Hello", его нужно поприветствовать. Иначе написать, что он невежлив.

Для решения подобных задач в Python (да и в других языках программирования) существует условный оператор if. Например, задача выше решается так:

say = input()
if say == "Hello":
    print("Приветствую!")
else:
    print("Вы невежливый. Пожалуйста, поздоровайтесь!")

Здесь использована функция …

Числа, арифметические операции

Целые числа

Целые числа, как и в жизни, как и в других языках - это... целые числа. 0, 1, -111, 954323209 - это всё примеры целых чисел. В Python они представлены типом int.

Тип int не означает, что где-то специально нужно писать int a = 5. Это означает лишь то, что, если написать …

Переменные и типизация

Представьте, что нам нужно напечатать на экран фразу Hello, world! не один, а два раза. Эту задачу можно решить так:

print("Hello world!")
print("Hello world!")

В простейшем случае так можно поступать. Но если фраза "Hello world!" будет использоваться чаще, в разных частях программы, и ещё и при каких-то условиях …

Моя программа не работает? Что делать?

Моя программа на Python выдаёт какую-то странную ошибку! Надо срочно где-нибудь спросить, а что же в питоне не так? Не в моей же программе дело!

Скорее всего, именно в программе где-то ошибка. Будем разбираться, как понять, в чём именно.

Моя программа не запускается

Проблема: Моя программа не запускается. На доли …

Основы синтаксиса

Синтаксис языка Python очень прост.

  • Конец строки является концом инструкции (точка с запятой не требуется).

  • Вложенные инструкции объединяются в блоки по величине отступов. Отступ может быть любым, главное, чтобы в пределах одного вложенного блока отступ был одинаков. Однако хорошим тоном считается отступ каждого блока в 4 пробела

  • Вложенные инструкции в …

Hello world - первая программа на Python

После загрузки и установки python открываем IDLE (среда разработки на языке Python, поставляемая вместе с дистрибутивом).

Здесь и далее буду приводить примеры под ОС Windows, как более распространённой среди новичков.

Запускаем IDLE (изначально запускается в интерактивном режиме), после чего уже можно начинать писать первую программу. Традиционно, первой программой у нас …

Загрузка и установка Python

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

И в этой части я объясню, как это сделать.

Установка Python на Windows

Скачивать python будем с официального сайта. Не рекомендую скачивать интерпретатор python с других сайтов или через торрент. Программа абсолютно бесплатная. Заходим на …

Для чего применяется Python?

Язык программирования Python используется во многих сферах IT-индустрии, имеет множество применений. Вот лишь некоторые из них:

Веб-разработка

Чаще всего вакансии с требованием Python попадаются для Web-разработки. Python используется для создания динамических сайтов.

Просто "из коробки" на Python не написать сайт (как, например, это можно сделать на PHP, вставив код в …