Хендбук по Python поможет овладеть основным синтаксисом и принципами языка. Для этого не потребуется специальной подготовки — достаточно знаний по информатике, логике и математике на уровне школьной программы. Кроме основных конструкций в учебнике рассмотрены разные подходы к программированию, реализованные на Python. А в последней главе вы прикоснётесь к главной суперсиле языка — большому количеству прикладных библиотек.
-
1. Введение
-
2. Базовые конструкции Python
-
3. Коллекции и работа с памятью
-
4. Функции и их особенности в Python
-
5. Объектно-ориентированное программирование
-
6. Библиотеки для получения и обработки данных
Последнее обновление: 10.09.2023
-
Глава 1. Введение в Python
-
Язык программирования Python
-
Установка Python и первая программа на Windows
-
Установка Python и первая программа на MacOS
-
Установка Python и первая программа на Linux
-
Управление версиями Python на Windows, MacOS и Linux
-
Первая программа в PyCharm
-
Python в Visual Studio
-
-
Глава 2. Основы Python
-
Введение в написание программ
-
Переменные и типы данных
-
Консольный ввод и вывод
-
Арифметические операции с числами
-
Поразрядные операции с числами
-
Условные выражения
-
Условная конструкция if
-
Циклы
-
Функции
-
Параметры функции
-
Оператор return и возвращение результата из функции
-
Функция как тип, параметр и результат другой функции
-
Лямбда-выражения
-
Преобразование типов
-
Область видимости переменных
-
Замыкания
-
Декораторы
-
-
Глава 3. Объектно-ориентированное программирование
-
Классы и объекты
-
Инкапсуляция, атрибуты и свойства
-
Наследование
-
Переопределение функционала базового класса
-
Атрибуты классов и статические методы
-
Класс object. Строковое представление объекта
-
-
Глава 4. Обработка ошибок и исключений
-
Конструкция try…except…finally
-
except и обработка разных типов исключений
-
Генерация исключений и создание своих типов исключений
-
-
Глава 5. Списки, кортежи и словари
-
Списки
-
Кортежи
-
Диапазоны
-
Словари
-
Множества
-
List comprehension
-
Упаковка и распаковка
-
Упаковка и распаковка в параметрах функций
-
-
Глава 6. Модули
-
Определение и подключение модулей
-
Генерация байткода модулей
-
Модуль random
-
Модуль math
-
Модуль locale
-
Модуль decimal
-
Модуль dataclasses. Data-классы
-
-
Глава 7. Строки
-
Работа со строками
-
Основные методы строк
-
Форматирование
-
-
Глава 8.Pattern matching
-
Конструкция match
-
Кортежи в pattern matching
-
Массивы в pattern matching
-
Словари в pattern matching
-
Классы в pattern matching
-
guards или ограничения шаблонов
-
Установка псевдонимов и паттерн AS
-
-
Глава 9. Работа с файлами
-
Открытие и закрытие файлов
-
Текстовые файлы
-
Файлы CSV
-
Бинарные файлы
-
Модуль shelve
-
Модуль OS и работа с файловой системой
-
Программа подсчета слов
-
Запись и чтение архивных zip-файлов
-
-
Глава 10. Работа с датами и временем
-
Модуль datetime
-
Операции с датами
-
- Глава 1. Введение в Python
- Язык программирования Python
- Установка Python и первая программа на Windows
- Установка Python и первая программа на MacOS
- Установка Python и первая программа на Linux
- Управление версиями Python на Windows, MacOS и Linux
- Первая программа в PyCharm
- Python в Visual Studio
- Глава 2. Основы Python
- Введение в написание программ
- Переменные и типы данных
- Консольный ввод и вывод
- Арифметические операции с числами
- Поразрядные операции с числами
- Условные выражения
- Условная конструкция if
- Циклы
- Функции
- Параметры функции
- Оператор return и возвращение результата из функции
- Функция как тип, параметр и результат другой функции
- Лямбда-выражения
- Преобразование типов
- Область видимости переменных
- Замыкания
- Декораторы
- Глава 3. Объектно-ориентированное программирование
- Классы и объекты
- Инкапсуляция, атрибуты и свойства
- Наследование
- Переопределение функционала базового класса
- Атрибуты классов и статические методы
- Класс object. Строковое представление объекта
- Глава 4. Обработка ошибок и исключений
- Конструкция try…except…finally
- except и обработка разных типов исключений
- Генерация исключений и создание своих типов исключений
- Глава 5. Списки, кортежи и словари
- Списки
- Кортежи
- Диапазоны
- Словари
- Множества
- List comprehension
- Упаковка и распаковка
- Упаковка и распаковка в параметрах функций
- Глава 6. Модули
- Определение и подключение модулей
- Генерация байткода модулей
- Модуль random
- Модуль math
- Модуль locale
- Модуль decimal
- Модуль dataclasses. Data-классы
- Глава 7. Строки
- Работа со строками
- Основные методы строк
- Форматирование
- Глава 8. Pattern matching
- Конструкция match
- Кортежи в pattern matching
- Массивы в pattern matching
- Словари в pattern matching
- Классы в pattern matching
- guards или ограничения шаблонов
- Установка псевдонимов и паттерн AS
- Глава 9. Работа с файлами
- Открытие и закрытие файлов
- Текстовые файлы
- Файлы CSV
- Бинарные файлы
- Модуль shelve
- Модуль OS и работа с файловой системой
- Программа подсчета слов
- Запись и чтение архивных zip-файлов
- Глава 10. Работа с датами и временем
- Модуль datetime
- Операции с датами
Прочитав статью, вы познакомитесь с особенностями языка Python, основными типами данных, условными операторы, циклами и работой с файлами. В заключении приведена подборка литературы и каналов на YouTube, а также бесплатных курсов.
***
Python в Ubuntu предустановлен. Чтобы узнать версию Python, откроем терминал комбинацией клавиш Ctrl + Alt + T
и введем следующую команду:
python3 --version
Для Windows нужно скачать Python с официального сайта и установить как обычную программу.
Установка редактора кода
Для работы нам понадобится редактор кода (IDE). Самые популярные:
- PyCharm
- Atom
- Visual Studio Code
- Sublime Text
Для установки Atom в Ubuntu введем в терминале:
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'
sudo apt-get update
sudo apt-get install atom
Для Windows скачаем Atom с официального сайта. После установки редактора кода установим для него плагин run-python-simply
(есть и другие) для запуска Python. Два способа установки:
- Перейдем на страничку плагина и нажмем кнопку
Install
. - Откроем Atom, перейдем во вкладку
File
→Settings
→Install
, введем в поле поискаrun-python-simply
и установим его.
Создание проекта
Создадим проект, в котором будем хранить код и другие файлы. Для этого перейдем во вкладку File
→ Add Project Folder
и выберем любую свободную папку.
Онлайн-редакторы кода
Если под рукой только смартфон, воспользуемся бесплатными онлайн-редакторами кода:
- repl.it
- onlinegdb.com
- tutorialspoint.com
- paiza.io
- onecompiler.com
1. Синтаксис
Python использует отступы, чтобы обозначить начало блока кода:
if 3 > 1:
print("Три больше единицы") # Три больше единицы
Python выдаст ошибку, если вы пропустите отступ:
if 3 > 1:
print("Три больше единицы") # Ошибка: IndentationError: expected an indented block
Рекомендуется использовать отступ, равный четырем пробелам.
2. Hello, World
Создадим файл example.py
, где example
– имя файла, .py
– расширение, которое означает, что программа написана на языке программирования Python.
Напишем в example.py
следующую строчку:
print('Hello, World') # Hello, World
У нас установлен плагин run-python-simply
и запустить код мы можем двумя способами:
- перейти во вкладку
Packages
→Run Python Simply
→Toggle F5
; - или нажать на клавишу
F5
.
После запуска кода появится окно терминала с результатом или ошибкой.
В нашем случае в терминале отобразится фраза Hello, World
.
Здесь:
print()
– функция, выводящая на экран фразу Hello, World
.
'Hello, World'
– строка (заключена в кавычки).
Также можно использовать переменную word
, которой присвоим значение 'Hello, World'
:
word = 'Hello, World'
print(word) # Hello, World
Python – язык с динамической типизацией, то есть нам не нужно заранее объявлять тип переменной, является ли она строкой, числом и так далее.
О функциях поговорим в конце статьи, сейчас разберемся со строками и другими типами данных.
3. Типы данных
3.1. Строки
Строка – упорядоченная последовательность символов, заключенная в одинарные или двойные кавычки:
"Cat and dog" # пример записи строки
'Cat and giraffe'
Операции со строками
Изменение регистра первого символа к верхнему регистру с помощью метода title()
:
string = 'cat'
print(string.title()) # Cat
Преобразование всех символов к верхнему и нижнему регистру методами upper()
и lower()
соответственно:
string = 'cat'
print(string.upper()) # CAT
string = 'DOG'
print(string.lower()) # dog
Объединение строк (конкатенация). Строки объединяются с помощью знака сложения +
:
first_animal = 'cat'
second_animal = 'dog'
all_animals = first_animal + ',' + ' ' + second_animal
print(all_animals) # cat, dog
Повторение строки:
animal = 'Cat'
print(animal * 5) # CatCatCatCatCat
Вычисление длины строки. Чтобы определить длину строки воспользуемся встроенной функцией len()
(сокращённое от англ. length):
animal = 'Cat'
print(len(animal)) # 3
Индексация начинается с 0
. В нашем случае символ C
имеет индекс 0
, a
– 1
, t
– 2
.
Для получения элемента по индексу воспользуемся квадратными скобками []
:
animal = 'Cat'
print(animal[0]) # C
В предыдущем примере по индексу мы получали один элемент строки. По срезу можно получить несколько элементов:
animal = 'CatDog'
print(animal[1:3]) # at
print(animal[0:6:2]) # Cto – выводится нулевой элемент и каждый второй после него
Как формируется срез:
list_name[start:stop:step]
, где start
– начало среза, stop
– конец среза, step
– шаг среза.
Получим с помощью среза последний элемент:
animal = 'CatDog'
print(animal[-1]) # g
Все элементы, кроме первого:
animal = 'CatDog'
print(animal[1:]) # atDog
Все элементы, кроме последнего:
animal = 'CatDog'
print(animal[0:5]) # CatDo
print(animal[:5]) # CatDo
print(animal[:-1]) # CatDo
Создание копии строки через срез:
animal = 'CatDog'
animal_copy = animal[:]
print(animal_copy) # CatDog
Методом replace()
заменим символы в строке:
animal = 'CatDog'
print(animal.replace('Cat', 'Dog')) # DogDog
В скобках метода replace()
указана дополнительная информация: Cat
– элемент, подлежащий замене на элемент Dog
.
Для удаление пробелов слева и справа применяется метод strip()
, только справа – rstrip()
, только слева – lstrip()
:
animal = ' CatDog '
print(animal.strip()) # CatDog
print(animal.rstrip()) # CatDog – здесь остался пробел слева
print(animal.lstrip()) # CatDog – здесь остался пробел справа
Преобразование строки в список индивидуальных символов:
animal = 'CatDog '
print(list(animal)) # ['C', 'a', 't', 'D', 'o', 'g', ' ']
3.2. Числа
Целые числа (int) не имеют дробной части:
print(25 + 0 - 24) # 1
Число с плавающей точкой (float) имеет дробную часть:
print(2.8 + 4.1) # 6.8999999999999995
Операции над числами:
print(2 + 3) # Сложение: 5
print(5 - 4) # Вычитание: 1
print(5 * 5) # Умножение: 25
print(4 / 2) # Деление: 2.0
print(4 ** 4) # Возведение в степень: 256
Порядок операций. Выражение в скобках будет просчитываться в первую очередь:
print(3*4 + 5) # 17
print(3*(4 + 5)) # 27
Чтобы преобразовать число с плавающей точкой в целое воспользуемся функцией int()
, а для обратного преобразования – функцией float()
:
print(int(5.156)) # 5
print(float(4)) # 4.0
3.3. Списки
Список (англ. list) – набор упорядоченных элементов произвольных типов. Списки задаются квадратными скобками []
и содержат объекты любого типа: строки, числа, другие списки и так далее. Элементы можно менять по индексу.
Создадим список animals
и выведем его на экран:
animals = ['cat', 'dog', 'giraffe']
print(animals) # ['cat', 'dog', 'giraffe']
Обратимся к второму элементу списка:
animals = ['cat', 'dog', 'giraffe']
print(animals[1]) # dog
Чтобы изменить элемент списка, обратимся к нему по индексу и присвоим новое значение:
animals = ['cat', 'dog', 'giraffe']
print(animals) # ['cat', 'dog', 'giraffe']
animals[2] = 'orangutan' # меняем третий элемент
print(animals) # ['cat', 'dog', 'orangutan']
animals[2] = ['orangutan']
print(animals) # ['cat', 'dog', ['orangutan']] – список внутри списка, вложенный список
Для добавления элемента в конец списка воспользуемся методом append()
:
animals = ['cat', 'dog', 'giraffe']
animals.append('tyrannosaurus')
print(animals) # ['cat', 'dog', 'giraffe', 'tyrannosaurus']
Метод insert()
вставляет элемент по индексу:
animals = ['cat', 'dog', 'giraffe']
animals.insert(1, 43)
print(animals) # ['cat', 43, 'dog', 'giraffe']
Число 43
вставляется на место с индексом 1
, остальные элементы сдвигаются вправо. Первый элемент остается на прежнем месте.
Для удаления элемента из списка, обратимся к элементу по индексу, используя команду del
:
animals = ['cat', 'dog', 'giraffe']
del animals[2]
print(animals) # ['cat', 'dog']
Другой способ удаления – метод pop()
:
animals = ['cat', 'dog', 'giraffe']
animals.pop(2)
print(animals) # ['cat', 'dog']
В двух предыдущих примерах мы удаляли элемент по его индексу. Теперь удалим элемент по его значению с помощью метода remove()
:
animals = ['cat', 'dog', 'giraffe']
animals.remove('dog')
print(animals) # ['cat', 'giraffe']
Чтобы упорядочить список по алфавиту используем метод sort()
:
animals = ['giraffe', 'cat', 'dog']
animals.sort()
print(animals) # ['cat', 'dog', 'giraffe']
Список в обратном порядке выводится методом reverse()
:
animals = ['cat', 'dog', 'giraffe']
animals.reverse()
print(animals) # [giraffe', 'dog', 'cat']
Для определения длины списка воспользуемся функцией len()
:
animals = ['cat', 'dog', 'giraffe']
print(len(animals)) # 3
3.4. Кортежи
Кортеж (англ. tuple), как и список хранит элементы, только в отличие от списка, элементы кортежа не изменяются. Кортеж задается круглыми скобками ()
:
animals = ('cat', 'dog', 'giraffe')
print(animals[0]) # Получение элемента кортежа с индексом 0: cat
Одноэлементный кортеж задается с помощью запятой после первого элемента. Без запятой получим строку. Чтобы узнать какой тип данных мы получаем на выходе воспользуемся функцией type()
:
animals = ('cat',)
print(animals) # ('cat',)
print(type(animals)) # <class 'tuple'> – кортеж
animals = ('cat')
print(animals) # cat
print(type(animals)) # <class 'str'> – строка
Конкатенация кортежей:
print(('cat',) + ('dog', 2)) # ('cat', 'dog', 2)
Повторение кортежа:
print(('cat', 'dog', 4) * 2) # ('cat', 'dog', 4, 'cat', 'dog', 4)
Срез кортежа:
animals = ('cat', 'dog', 'giraffe')
print(animals[0:1]) # ('cat',)
print(animals[0:2]) # ('cat', 'dog')
Чтобы создать список из элементов кортежа применим функцию list()
:
animals_tuple = ('cat', 'dog', 33)
animals_list = list(animals_tuple)
print(animals_list) # ['cat', 'dog', 33]
3.5. Словари
Словарь – неупорядоченная коллекция произвольных элементов, состоящих из пар «ключ-значение». Словарь объявляется через фигурные скобки {}
: dictionary = {‘pets
‘: ‘cat
‘, ‘numbers
‘: (1, 2)
}, где pets
и numbers
– ключи, а cat
, (1, 2)
– значения. Если в списке мы получаем объект по его индексу, то в словаре по ключу.
Получим по ключам соответствующие значения из словаря dictionary
:
dictionary = {'pets': 'cat', 'numbers': (1, 2)}
print(dictionary['pets']) # cat
print(dictionary['numbers']) # (1, 2)
print(dictionary['numbers'][1]) # 2
Чтобы добавить новую пару «ключ-значение» используем следующую запись словарь['новый_ключ'] = новое_значение
:
dictionary = {'pets': 'cat', 'numbers': (1, 2)}
dictionary['dinosaur'] = 'tyrannosaurus', 'pterodactylus'
print(dictionary) # {'pets': 'cat', 'numbers': (1, 2), 'dinosaur': ('tyrannosaurus', 'pterodactylus')}
Изменение существующего значения похоже на добавление нового значения словарь['существующий_ключ'] = новое_значение
:
dictionary = {'pets': 'cat', 'numbers': (1, 2)}
dictionary['pets'] = 'dog'
print(dictionary) # {'pets': 'dog', 'numbers': (1, 2)}
Командой del
можно удалить ключ со значением:
dictionary = {'pets': 'cat', 'numbers': (1, 2)}
del dictionary['pets']
print(dictionary) # {'numbers': (1, 2)}
3.6. Множества
Множества – неупорядоченные последовательности не повторяющихся элементов. Множество задается через фигурные скобки {}
:
animals_and_numbers = {'cat', 'dog', 99, 100}
print(animals_and_numbers) # {'cat', 99, 100, 'dog'}
Операции над множествами:
animals_and_numbers = {'cat', 'dog', 99, 100}
numbers = {555, 99}
animals = {'cat', 'dog'}
print(animals_and_numbers.union(numbers)) # {'cat', 99, 100, 'dog', 555} – добавляет в множество animals_and_numbers элементы множества numbers
print(animals_and_numbers.intersection(numbers)) # {99} – возвращает множество, являющееся пересечением множеств animals_and_numbers и numbers
print(animals_and_numbers.difference(numbers)) # {'cat', 'dog', 100} – Возвращает разность множеств animals_and_numbers и numbers
print(animals_and_numbers.issuperset(animals)) # True – Возвращает True, если animals является подмножеством animals_and_numbers.
3.7. Файлы
С помощью функции open()
мы создаем файловый объект для работы с файлами. Создадим в папке с python-файлом текстовой файл example.txt
, напишем в нем слово test
, сохраним и закроем. Следующий код открывает и выводит на экран содержимое текстового файла example.txt
:
with open('example.txt', 'r') as file:
for line in file:
print(line)
Здесь:
example.txt
– путь к файлу и его имя. В нашем случае файл расположен в папке с выполняемой программой.
r
– режим работы «только чтение».
Попробуем дозаписать числа в конец файла:
numbers = ['0', '1', '2', '3']
with open('example.txt', 'a') as file:
for number in numbers:
file.write(number + '\n')
0 # в файл запишется последовательность чисел, каждое число с новой строчки
1
2
3
Здесь:
numbers
– список чисел.
a
– режим записи «в конец текстового файла».
\n
– перенос на новую строчку.
Без переноса строки результат будет следующий:
numbers = ['0', '1', '2', '3']
with open('example.txt', 'a') as file:
for number in numbers:
file.write(number)
0123 # результат записи без переноса строки
4. Ввод данных
Для ввода данных применяется функция input()
:
input_word = input('Введите какое-нибудь слово: ')
print('Слово: ' + input_word)
5. Условные инструкции
Оператор if
выполняет код в зависимости от условия. Проверим, если число три меньше пяти, то выведем на экран слово true
:
if 3 < 5:
print('true') # true
Попробуем оператор if-else
. else
переводится как «в другом случае». Когда условие if
не выполняется, то идет выполнение кода после else
:
if 3 > 5:
print('true')
else:
print('false') # false
elif
= else
+ if
– код выполняется, если предыдущее условие ложно, а текущее истинно:
number = 15
if number < 3:
print('число меньше трех')
elif 4 < number < 10:
print('число в промежутке от 4 до 10')
elif number > 10:
print('число больше 10') # число больше 10
6. Цикл while
Напишем цикл, который 5 раз выведет на экран слово hello
:
x = 0
while x < 5:
print('hello')
x += 1
# получаем пять раз слово hello
hello
hello
hello
hello
hello
Здесь:
while
– обозначение цикла.
x < 5
– условие, которое записывается после while
. Каждый раз после выполнения цикла (после одной итерации) проверяется это условие. Если оно становится ложным, цикл прекращает работу.
print('hello')
– вывести на экран слово hello
.
x += 1
– это сокращенный способ записи x = x + 1
. То есть при каждой итерации значение x увеличивается на единицу.
Бесконечный цикл записывается с помощью while True
:
while True:
print('hello')
hello
hello
hello
hello
hello
…
7. Цикл for
Цикл for
перебирает элементы последовательности:
numbers = ['0', '1', '2', '3']
for i in range(0, len(numbers)):
print(numbers[i])
# на экран выводятся числа 0, 1, 2 и 3
0
1
2
3
Здесь:
i
– переменная, которая принимает значение из диапазона значений range(0, len(numbers))
.
range(0, len(numbers))
– последовательность чисел от 0
до значения длины списка numbers
.
print(numbers[i])
– тело цикла, выводит на экран i-й элемент списка numbers
.
Второй вариант записи:
numbers = ['0', '1', '2', '3']
for number in numbers:
print(number)
# идентичный результат
0
1
2
3
8. Функции
Функция выполняет одну конкретную задачу и имеет имя. Напишем функцию greeting()
, которая выводит на экран приветствие:
def greeting(): # объявление функции
print('hello') # тело функции
greeting() # запуск функции
Здесь:
def
– создает объект функции и присваивает ей имя greeting
. В скобках можно указать аргументы (см. следующий пример). В нашем случае аргументов нет и скобки пустые.
print('hello')
– выводит на экран слово hello
.
Напишем функцию summation()
, которая складывает два числа:
def summation (a, b):
return print(a + b)
summation(3, 8) # 11
Здесь:
a
и b
– аргументы функции.
return
возвращает значение функции.
9. Модули
Модуль – файл, содержащий функции, классы и данные, которые можно использовать в других программах.
from math import trunc
print(trunc(3.9)) # 3
Здесь:
from math import trunc
– из встроенного в Python модуля math
импортируем функцию trunc
, которая отбрасывает дробную часть числа.
Это был импорт отдельной функции. Теперь импортируем весь модуль и обратимся к функции через модуль.имя_функции()
:
import math
print(math.trunc(3.9)) # 3
10. Комментарии
Комментирование кода помогает объяснить логику работы программы. Однострочный комментарий начинается с хеш-символа #
:
a = 45 # комментарий к коду
Многострочный комментарий заключается с обеих сторон в три кавычки:
"""
a = 45
b = 99
"""
Литература
- «Изучаем Python», Марк Лутц
- «Программируем на Python», Майкл Доусон
- «Изучаем программирование на Python», Пол Бэрри
- «Начинаем программировать на Python», Тонни Гэддис
- «Простой Python. Современный стиль программирования», Билл Любанович
Шпаргалки
- Шпаргалка по Python3 (.pdf)
- Python Cheat Sheet (.pdf)
- Beginners Python Cheat Sheet (.pdf)
- Essential Python Cheat Sheet
- Python Conditions Cheat Sheet
Больше шпаргалок в нашей группе ВКонтакте.
YouTube-каналы и курсы
Бесплатные курсы на русском и английском языках в YouTube и на образовательных ресурсах:
На английском:
- Programming with Mosh
- freeСodeСamp.org
- Microsoft Developer
- Introduction To Python Programming (Udemy)
На русском:
- Python с нуля
- Python для начинающих
- Python с нуля от А до Я
- Программирование на Python (Stepik)
- Python: основы и применение (Stepik)
- Питонтьютор (онлайн-тренажер)
Python в «Библиотеке Программиста»
- подписывайтесь на тег Python, чтобы получать уведомления о новых постах на сайте;
- телеграм-канал «Библиотека питониста»;
- телеграм-канал для поиска работы «Python jobs — вакансии по питону, Django, Flask».
***
Мы кратко познакомились с основными понятиями Python: команды, функции, операторы и типы данных. У этого языка низкий порог вхождения, простой синтаксис, поэтому вероятность освоить его человеку, который никогда не занимался программированием – высокая (по моей субъективной оценке – 90%).