Дмитрий Одиссеев
Справочник Python

Вложенное

Эта книга – не учебник. И не энциклопедия. Это скорее блокнот, который лежит рядом, когда ты пишешь код и вдруг забываешь, как работает enumerate() или как правильно импортировать datetime. Я не ставил цель объяснить всё. Я хотел собрать то, что действительно нужно. Без воды. Без философии. Только команды, конструкции, модули, скрипты – всё, что помогает не зависать на Stack Overflow по 40 минут из-за одной строчки. Если ты только начинаешь – отлично. Если ты уже пишешь на Python, но хочешь держать под рукой короткие и понятные шпаргалки – ещё лучше. А если ты просто любишь, когда всё под рукой и по делу – тогда мы с тобой на одной волне. Я писал это не как преподаватель. А как человек, который сам сто раз забывал, как работает zip(), и каждый раз гуглил, как правильно писать lambda.

Пусть эта книга будет твоим быстрым входом, твоим напоминанием, твоим карманным Python-напарником.

Поехали.

Основы Python: переменные и типы данных, простые конструкции

X = 10

Name = “Артем”

Is_active = True

A = 5 # int

B = 3.14 # float

C = “hello” # str

D = [1, 2, 3] # list

E = (1, 2) # tuple

F = {“x”: 1} # dict

G = {1, 2, 3} # set

H = None # NoneType

Name = input(“Введите имя: “)

Print(“Привет,”, name)

Age = 18

If age >= 18:

Print(“Доступ разрешён”)

Elif age > 0:

Print(“Слишком рано”)

Else:

Print(“Некорректный возраст”)

For i in range(5):

Print(i)

N = 0

While n < 5:

Print(n)

N += 1

# Это однострочный комментарий

Это

Многострочный

Комментарий

“”

Функции, списки, словари и работа с данными

Функции позволяют переиспользовать код и делать его чище.

# Определяем функцию с аргументом name

def greet(name):

Return f”Привет, {name}!”

# Вызываем функцию и выводим результат

Print(greet(“Артем”))

# Если имя не передано, будет использовано “гость”

def greet(name=”гость”):

Print(f”Привет, {name}”)

# Функция возвращает кортеж из двух чисел

Def get_coords():

Return 10, 20

# Распаковываем результат в две переменные

X, y = get_coords()

Списки: list

# Создаём список фруктов

Fruits = [“яблоко”, “банан”, “вишня”]

# Добавляем элемент в конец списка

Fruits.append(“груша”)

# Изменяем второй элемент (индексация с нуля)

Fruits[1] = “манго”

# Выводим первый элемент

Print(fruits[0])

# Проходим по каждому элементу списка. Перебор списка

For fruit in fruits:

Print(fruit)

# Выводим элементы с индексами 1 и 2 (не включая 3). Это срезы

Print(fruits[1:3])

Словари(dict)

Словари это пары ключ:значение

# Создаём словарь с данными о человеке

Person = {“name”: “Артем”, “age”: 30}

# Получаем значение по ключу

Print(person[“name”])

# Добавляем новый ключ и значение

Person[“city”] = “Москва”

# Проходим по ключам и значениям

For key, value in person.items():

Print(key, value)

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

Это неупорядоченная коллекция

# Создаём множество

Nums = {1, 2, 3}

# Добавляем элемент

Nums.add(4)

# Удаляем элемент

Nums.remove(2)

Операции над множествами:

A = {1, 2, 3}

B = {3, 4, 5}

# Пересечение множеств (общие элементы)

Print(a & b)

# Объединение множеств (все уникальные элементы)

Print(a | b)

Кортежи(tuple)

Кортежи – это неизменяемые списки

# Создаём кортеж

Point = (10, 20)

# Распаковываем значения в переменные

X, y = point

# Проверяем, есть ли “яблоко” в списке

If “яблоко” in fruits:

Print(“Есть яблоко!”)

Операторы сравнения и логические операторы

# Сравнение

A = 5

B = 10

Print(a == b) # False

Print(a != b) # True

Print(a < b) # True

# Логические операторы

X = True

Y = False

Print(x and y) # False

Print(x or y) # True

Print(not x) # False

Арифметические операторы:

A = 10

B = 3

Print(a + b) # 13

Print(a – b) # 7

Print(a * b) # 30

Print(a / b) # 3.333…

Print(a // b) # 3 (целочисленное деление)

Print(a % b) # 1 (остаток)

Print(a ** b) # 1000 (возведение в степень)

Работа со строками:

Text = “Привет, мир”

# Индексация и срезы

Print(text[0]) # П

Print(text[-1]) # р

Print(text[0:6]) # Привет

# Методы строк

Print(text.upper()) # ПРИВЕТ, МИР

Print(text.lower()) # привет, мир

Print(text.replace(“мир”, “Python”)) # Привет, Python

Print(len(text)) # Длина строкиtext = “Привет, мир”

# Индексация и срезы

Print(text[0]) # П

Print(text[-1]) # р

Print(text[0:6]) # Привет

# Методы строк

Print(text.upper()) # ПРИВЕТ, МИР

print(text.lower()) # привет, мир

print(text.replace("мир", "Python")) # Привет, Python

print(len(text)) # Длина строки

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

Name = “Артем”

Age = 30

# Старый способ

Print(“Имя: %s, возраст: %d” % (name, age))

# Новый способ

Print(“Имя: {}, возраст: {}”.format(name, age))

# f-строки (современно и удобно)

Print(f”Имя: {name}, возраст: {age}”)

Генераторы списков

# Создание списка квадратов чисел от 0 до 4

Squares = [x**2 for x in range(5)]

Print(squares) # [0, 1, 4, 9, 16]

# Фильтрация

Evens = [x for x in range(10) if x % 2 == 0]

Print(evens) # [0, 2, 4, 6, 8]

Встроенные функции:

Numbers = [1, 2, 3, 4]

Print(len(numbers)) # 4

Print(sum(numbers)) # 10

Print(max(numbers)) # 4

Print(min(numbers)) # 1

Print(sorted(numbers)) # [1, 2, 3, 4]

Логические условия

Age = 18

If age >= 18:

Print(“Доступ разрешён”)

Else:

Print(“Извини, тебе нет 18”)

Промежуточные условия

Score = 75

If score >= 90:

Print(“Отлично!”)

Elif score >= 70:

Print(“Хорошо”)

Else:

Print(“Нужно подтянуть”)

Вложенные условия

User = “admin”

Password = “1234”

If user == “admin”:

If password == “1234”:

Print(“Добро пожаловать, админ!”)

Else:

Print(“Пароль неверный”)

Else:

Print(“Пользователь не найден”)

Условия с логическими операторами

Login = True

Permissions = True

If login and permissions:

Print(“Вход успешен”)

Else:

Print(“Ошибка доступа”)

Цикл for

For – проходит по каждому элементу списка. От начала до конца.

Names = [“Оля”, “Игорь”, “Лена”]

For name in names:

Print(f”Привет, {name}”)

Цикл whIle. Пока условие верно

Counter = 0

While counter < 5:

Print(f”Счётчик: {counter}”)

Counter += 1

Перебор по диапазону range

For i in range(3):

Print(“Бум!”)

For i in range(1, 6, 2):

Print(i) # 1, 3, 5

Управление циклом

For i in range(10):

If i == 5:

Break # выйти из цикла

Print(i)

For i in range(5):

If i % 2 == 0:

Continue # пропустить выполнение

Print(i)

For i in range(3):

Print(i)

Else:

Print(“Цикл завершён без break”)

Вложенные циклы

For i in range(3):

For j in range(2):

Print(f”i={i}, j={j}”)

Простабудетя функция

Def greet():

Print(“Привет, Одиссей!”)

Greet() # вызов

Функция с параметрами

Def greet(name):

Print(f”Привет, {name}!”)

Greet(“Лена”) # Привет, Лена!

Возвращаем значение

Def square(x):

Return x ** 2

Result = square(5)

Print(result) # 25

Значение поу умолчанию

Def greet(name=”гость”):

Print(f”Добро пожаловать, {name}”)

Greet() # Добро пожаловать, гость

Greet(“Анна”) # Добро пожаловать, Анна

Аргументы

Def show_all(*args):

For item in args:

Print(item)

Show_all(“файл1.txt”, “файл2.txt”)

Def config(**kwargs):

For key, value in kwargs.items():

Print(f”{key} = {value}”)

Config(theme=”dark”, font=”Arial”)

Вложенные функции

Def outer():

Def inner():

Print(“Внутри!”)

Inner()

Исключения

Try – пытаемся выполнить

Except – ловим ошибку и пишем

Базовая конструкция try-except

Try:

Number = int(input(“Введите число: “))

Except ValueError:

Print(“Это не число!”)

Обработка нескольких ошибок

Try:

F = open(“data.txt”)

Content = f.read()

Except FileNotFoundError:

Print(“Файл не найден”)

Except IOError:

Print(“Ошибка при чтении”)

Обработчик finally

Он выполняется всегда, даже если выдает ошибку. В этом случае он закрывает файл.

Try:

F = open(“data.txt”)

# операции

Except:

Print(“Ошибка”)

Finally:

f.close() # выполняется всегда, даже при ошибке

Создание своих исключений

Raise позволяет вручную вызвать исключение.

Def check_age(age):

If age < 0:

Raise ValueError(“Возраст не может быть отрицательным”)

Check_age(-5) # вызовет ошибку

Отработка по типу ошибки

Try:

X = 1 / 0

Except ZeroDivisionError as e:

Print(f”Ошибка деления: {e}”)

Lambda функции (анонимные)

Это однострочная анонимная функция без имени. Подходит чтобы совершить быстрое действие без присваивании и объявлений в коде переменных

Square = lambda x: x ** 2

Print(square(5)) # 25 # можно так но эффективно будет функцию задать в print без переменной.

Примеры использования

С map

Nums = [1, 2, 3]

Squares = list(map(lambda x: x ** 2, nums))

Print(squares) # [1, 4, 9]

C filter

Nums = [5, 8, 11, 3]

Evens = list(filter(lambda x: x % 2 == 0, nums))

Print(evens) # [8]

Сортировка по условию

Data = [(1, “А”), (3, “B”), (2, “C”)]

Sorted_data = sorted(data, key=lambda item: item[0])

Print(sorted_data) # [(1, ‘А’), (2, ‘C’), (3, ‘B’)]

Если логика функции сложная или огромная, то здесь она не пригодится.

Дополнение к прошлым командам
Списки list

Append()

Добавляет элемент в конец списка

Names.append(“Игорь”)

Extend()

Добавляет несколько элементов сразу

Nums.extend([4, 5])

Insert()

Вставляет элемент по индексу

Colors.insert(1, “зелёный”)

Remove()

Удаляет первое вхождение элемента

Fruits.remove(“яблоко”)

Pop()

Удаляет элемент по индексу (или последний)

Items.pop(0)

Sort()

Сортирует список

Scores.sort()

Reverse()

Переворачивает список

Cards.reverse()

Count()

Считает количество вхождений элемента

Numbers.count(7)

Index()

Возвращает индекс элемента

Names.index(“Лена”)

Строки str

Strip()

Удаляет пробелы по краям строки

“ текст “.strip() → “текст”

Split()

Делит строку по разделителю

“а,б,в”.split(“,”) → [“а”, “б”, “в”]

Join()

Объединяет список строк в одну строку

“-“.join([“a”, “b”, “c”]) → “a-b-c”

Replace()

Заменяет подстроку

Text.replace(“мир”, “Python”)

Upper()

Превращает в заглавные буквы

“test”.upper() → “TEST”

Lower()

Превращает в строчные

“TEST”.lower() → “test”

Find()

Ищет подстроку и возвращает индекс

“hello”.find(“e”) → 1

Словари dict

Get()

Получает значение по ключу

User.get(“name”)

Keys()

Возвращает список всех ключей

Data.keys()

Values()

Возвращает список всех значений

Data.values()

Items()

Список пар ключ-значение

For k, v in info.items(): print(k, v)

Update()

Обновляет словарь новым содержимым

Config.update({“theme”: “dark”})

Pop()

Удаляет ключ и возвращает его значение

User.pop(“age”)

Функции

Def

Объявляет функцию

Def greet(): print(“Привет”)

Return

Возвращает значение из функции

Return x * 2

Lambda

Анонимная компактная функция

Lambda x: x ** 2

*args

Передача любого количества позиционных аргументов

Def show(*args): print(args)

**kwargs

Передача именованных аргументов

Def config(**kwargs): print(kwargs)

Циклы for

For

Цикл перебора элементов из коллекции

For item in items: print(item)

While

Цикл с условием

While x < 5: x += 1

Break

Прерывает цикл досрочно

For x in range(10): if x == 5: break

Continue

Пропускает текущую итерацию

For x in range(5): if x == 2: continue

Else

Выполняется, если цикл завершился без break

For x in range(3): print(x) else: print(“Готово”)

Условия if, else, iflse

If

Проверяет условие

If x > 5: print(“Больше”)

Elif

Дополнительная проверка

If x == 0: print(“Ноль”) elif x > 0: print(“Положительное”)

Else

Выполняется, если ни одно условие не подошло

If x < 0: print(“Отрицательное”) else: print(“Непонятно”)

Not

Отрицает булево значение

Not True → False

Арифметика

+

Сложение чисел

A + b

Вычитание

A – b

Умножение

A * b

/

Обычное деление

A / b

//

Целочисленное деление

A // b

%

Остаток от деления

A % b

**

Возведение в степень

A ** b

And

Логическое И

True and False → False

Or

Логическое ИЛИ

True or False → True

==

Проверка на равенство

X == y

x=

Проверка на неравенство

X != y

Встроенные функции

Len()

Возвращает длину объекта

Len(“Привет”) → 6

Sum()

Считает сумму элементов

Sum([1, 2, 3]) → 6

Max()

Возвращает максимальное значение

Max([3, 8, 5]) → 8

Min()

Возвращает минимальное значение

Min([3, 8, 5]) → 3

Sorted()

Сортирует список

Sorted([3, 1, 2]) → [1, 2, 3]

Итераторы и генераторы
Итераторы

Iter()

Создаёт итератор из коллекции

It = iter([1, 2, 3])

Next()

Возвращает следующий элемент итератора

Next(it) → 1

For x in iter([10, 20, 30]):

Print(x) # работает как обычный for

Создание собственного итератора

Class Counter:

Def __init__(self, max):

Self.max = max

Self.cur = 0

Def __iter__(self):

Return self

Def __next__(self):

If self.cur < self.max:

Self.cur += 1

Return self.cur

Else:

Raise StopIteration

For n in Counter(3):

Print(n) # 1, 2, 3

Генераторы

Yield

Промежуточный возврат значения из генератора

Def gen():

Yield 1

Yield 2

For x in gen():

Print(x) # 1, 2

Def countdown(n):

While n > 0:

Yield n

N -= 1

For num in countdown(3):

Print(num) # 3, 2, 1

Def even_numbers():

For i in range(10):

If i % 2 == 0:

Yield i

List(even_numbers()) → [0, 2, 4, 6, 8]

Раабота с файлами

Open()

Открывает файл и возвращает файловый объект

F = open(“data.txt”, “r”)

Read()

Читает весь файл как строку

Content = f.read()

Readline()

Читает одну строку из файла

Line = f.readline()

Readlines()

Читает все строки и возвращает список

Lines = f.readlines()

Write()

Записывает строку в файл

f.write(“Привет, мир!”)

writelines()

Записывает список строк

f.writelines([“Первая\n”, “Вторая\n”])

close()

Закрывает файл (обязательно после записи/чтения)

f.close()

Режим открытия файла

“r”

Открытие для чтения (файл должен существовать)

Open(“file.txt”, “r”)

“w”

Открытие для записи (перезапишет существующий файл)

Open(“file.txt”, “w”)

“a”

Открытие для добавления (дописывает в конец файла)

Open(“log.txt”, “a”)

“rb”

Открытие в двоичном режиме для чтения

Open(“image.png”, “rb”)

Безопасное открытие файла

With open(“data.txt”, “r”) as f:

Content = f.read()

With open(“output.txt”, “w”) as f:

f.write(“Сохранено!”)

Автоматически закроет и откроет файл. Даже если такого нету. Не будет никаких ошибок. Рекомендовано использовать только этот менеджер with as.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.