CodeDala
Home
Courses
Paths
How it works
Pricing
🌐
KZ
RU
EN
Log in
Start free
Py+
💻 For developers
Python: Next Level
Functions, files, errors, OOP, and final projects — the sequel to «Python From Scratch»
What you'll build
📘
A solid foundation
⚡
Practice in the browser
🎯
Mini-projects
🎓
Course certificate
📘 58
lessons
⏱ 1-2 evenings
🎓 Advanced
🎯 Mission
Master Python: Next Level
⚡
+630
XP
🏆
Certificate
PDF
🎓
Course complete
Progress
0 / 58 · 0%
Next up:
Что такое функция и зачем она нужна
Start the project →
Course program
01
Функции
0 / 12 lessons
⌄
01
Что такое функция и зачем она нужна
def — объявить функцию
•
имя() — вызвать
•
Повторное использование кода
⚡ +10
▶ Now
02
Параметры — передаём данные внутрь
def f(name):
•
Параметр и аргумент
•
Доступ внутри функции
⚡ +10
Open
03
Несколько параметров
def f(a, b)
•
Порядок имеет значение
•
Запятая между параметрами
⚡ +10
Open
04
return — возвращаем результат
return значение
•
Можно сохранить в переменную
•
Без return функция возвращает None
⚡ +10
Open
05
Параметры по умолчанию
def f(x=10)
•
Можно вызвать без аргумента
•
Сначала обязательные, потом с дефолтом
⚡ +10
Open
06
Именованные аргументы
f(name=...)
•
Порядок не важен
•
Удобно для длинных списков параметров
⚡ +10
Open
07
Локальные и глобальные переменные
Внутри функции — локальная
•
Снаружи — глобальная
•
Локальная не видна снаружи
⚡ +10
Open
08
*args — переменное число аргументов
def f(*args)
•
args — это кортеж
•
Передавай сколько хочешь
⚡ +10
Open
09
**kwargs — именованные аргументы пакетом
def f(**kwargs)
•
kwargs — это словарь
•
Гибкие настройки
⚡ +10
Open
10
Лямбды — функция в одной строке
lambda x: ...
•
Безымянная функция
•
Когда нужна на одно действие
⚡ +10
Open
11
Рекурсия — функция вызывает сама себя
Базовый случай
•
Шаг вглубь
•
Без базы — бесконечность
⚡ +10
Open
12
Мини-проект: библиотека функций для калькулятора
4 функции с return
•
Использование подряд
•
Параметры по умолчанию
⚡ +10
Open
02
Файлы и ввод-вывод
0 / 10 lessons
⌄
13
Файлы — что это и зачем
open(имя, режим)
•
Запись в "w"
•
Закрытие файла
⚡ +10
Open
14
with — безопасное открытие и автозакрытие
with open(...) as f:
•
Тело — с отступом 4 пробела
•
Закрытие гарантируется
⚡ +10
Open
15
Чтение всего файла — read()
Режим "r"
•
f.read() → одна большая строка
•
Печать содержимого
⚡ +10
Open
16
Чтение по строкам — for line in file
for line in f:
•
Каждая строка отдельно
•
rstrip() убирает \n
⚡ +10
Open
17
Запись "w" — перезаписываем файл
Режим "w" стирает старое
•
writelines для списка
•
Перенос строки добавь сам
⚡ +10
Open
18
Дозапись "a" — добавляем в конец
Режим "a" не стирает
•
Добавляет в конец
•
Удобно для логов
⚡ +10
Open
19
encoding="utf-8" — кириллица и эмодзи без проблем
По умолчанию — системная кодировка
•
encoding="utf-8" универсальный
•
Без неё бывают «кракозябры»
⚡ +10
Open
20
JSON — словарь ↔ строка
json.dumps(data)
•
json.loads(text)
•
Удобно для обмена данными
⚡ +10
Open
21
JSON в файл — dump и load
json.dump(data, f) — без s
•
json.load(f) — без s
•
Файл-объект, не строка
⚡ +10
Open
22
Мини-проект: сохраняем заметки в JSON
Список словарей
•
json.dump в файл
•
json.load обратно
⚡ +10
Open
03
Ошибки и исключения
0 / 8 lessons
⌄
23
Что такое исключение
Ошибка во время выполнения
•
Программа падает с трейсбэком
•
Встроенные типы ошибок
⚡ +10
Open
24
try / except — ловим ошибку
try: рискованный код
•
except: что делать при ошибке
•
Программа НЕ падает
⚡ +10
Open
25
Несколько типов в одном except
except (A, B):
•
Несколько вариантов
•
Кортеж типов в скобках
⚡ +10
Open
26
else — выполнить ТОЛЬКО если ошибки не было
try: пробуем
•
except: ловим
•
else: всё прошло хорошо
⚡ +10
Open
27
finally — выполнится ВСЕГДА
Сработает после try/except/else
•
Даже при возврате из функции
•
Полезно для очистки ресурсов
⚡ +10
Open
28
raise — кидаем свою ошибку
raise ValueError("...")
•
Когда входные данные плохие
•
Сигнализируем «дальше нельзя»
⚡ +10
Open
29
Свой класс исключения
class MyError(Exception):
•
Понятное имя для бизнес-ошибки
•
raise + except как обычно
⚡ +10
Open
30
Мини-проект: безопасный калькулятор
Функция с try/except
•
raise для бизнес-правил
•
Понятные сообщения
⚡ +10
Open
04
ООП
0 / 14 lessons
⌄
31
Что такое класс и объект
class — шаблон
•
Объект — конкретный экземпляр
•
Создание через имя()
⚡ +10
Open
32
__init__ и self — конструктор объекта
__init__ запускается автоматически
•
self — это сам объект
•
self.attr = ... сохраняет в объекте
⚡ +10
Open
33
Несколько атрибутов
Несколько self.x = ...
•
Каждый объект — со своим набором
•
Запятые между параметрами __init__
⚡ +10
Open
34
Методы — функции внутри класса
def method(self)
•
Вызов через объект.метод()
•
Можно использовать self.x внутри
⚡ +10
Open
35
__str__ — красивый вывод объекта
По умолчанию — техническая запись
•
def __str__(self) → строка
•
print() и f-строка вызывают его
⚡ +10
Open
36
Список объектов — работаем с коллекцией
Объекты можно класть в список
•
Цикл for по списку
•
Доступ к атрибуту каждого
⚡ +10
Open
37
Метод, меняющий состояние объекта
self.attr = ... в методе
•
Объект «помнит» изменения
•
Несколько методов на одном объекте
⚡ +10
Open
38
Атрибуты класса — общие для всех экземпляров
Объявляются СРАЗУ внутри class
•
Без self
•
Доступ через ClassName.attr или self.attr
⚡ +10
Open
39
Приватные атрибуты — соглашение _underscore
_имя — «не трогай извне»
•
Не настоящая защита, договорённость
•
Доступ через метод
⚡ +10
Open
40
Наследование — class Cat(Animal)
Дочерний класс получает методы родителя
•
class Child(Parent):
•
Бесплатно — что есть у родителя
⚡ +10
Open
41
super() — расширяем конструктор родителя
super().__init__(...)
•
Сначала родительский __init__
•
Потом свои self.x = ...
⚡ +10
Open
42
Переопределение методов
Дочерний класс может перезаписать метод родителя
•
Имя то же — поведение другое
•
Полиморфизм
⚡ +10
Open
43
Композиция — объект внутри объекта
Атрибут может быть объектом
•
Доступ через цепочку точек
•
Альтернатива наследованию
⚡ +10
Open
44
Мини-проект: банковский счёт
Класс с методами и состоянием
•
raise при ошибке
•
__str__ для красивого вывода
⚡ +10
Open
05
Модули и стандартная библиотека
0 / 8 lessons
⌄
45
Что такое модуль и зачем он нужен
import math и др.
•
Доступ через math.pi / math.sqrt
•
Стандартная библиотека
⚡ +10
Open
46
from ... import ... — берём только нужное
from модуль import имя
•
Без префикса в коде
•
Несколько имён через запятую
⚡ +10
Open
47
as — даём модулю короткое имя
import имя as короткое
•
Полезно для длинных имён
•
Конвенции вроде np / pd
⚡ +10
Open
48
random — случайные числа
randint(a, b) — целое в диапазоне
•
choice(list) — случайный элемент
•
Каждый запуск даёт разное
⚡ +10
Open
49
datetime — дата и время
from datetime import datetime
•
datetime.now() — текущий момент
•
Атрибуты .year .month .day
⚡ +10
Open
50
math — продвинутые функции
math.factorial(n)
•
math.floor / math.ceil
•
math.gcd для нод
⚡ +10
Open
51
collections.Counter — счётчик из коробки
from collections import Counter
•
Counter(данные) — частоты
•
.most_common(N) — топ-N
⚡ +10
Open
52
Мини-проект: генератор пароля
random.choices с k
•
Соединение через .join
•
Длина — параметр функции
⚡ +10
Open
06
Финальные мини-проекты
0 / 6 lessons
⌄
53
Проект: TODO-список с приоритетами
Список словарей
•
Функции add_task / show_tasks
•
Сортировка по приоритету
⚡ +10
Open
54
Проект: конвертер валют
Курсы как словарь
•
Функция convert через USD
•
Раунд округление
⚡ +10
Open
55
Проект: дневник заметок в JSON
Класс с методами add / save / load
•
JSON для сохранения
•
Цикл по записям
⚡ +10
Open
56
Проект: «Угадай число»
random + while
•
Список попыток
•
Подсказки больше / меньше
⚡ +10
Open
57
Проект: учёт книг в библиотеке
Два класса: Book и Library
•
__str__ для Book
•
Поиск по полю автора
⚡ +10
Open
58
Финал: ToDo-менеджер с сохранением
Класс TodoApp
•
JSON для постоянства
•
Все приёмы вместе
🎓
Course complete
Open
Python: Next Level — online coding course