LEARN X · ЗА 14 МИН
Python
Изучи Python за 14 минут: весь синтаксис на одной странице — переменные, строки, списки, словари, циклы, функции, классы, исключения и питоничные приёмы.
Это экспресс-тур «Learn Python in 14 minutes»: весь язык на одной странице. Читай код сверху вниз как единый скрипт — всё объяснение живёт в комментариях # прямо внутри кода.
1. Комментарии и вывод
# Однострочный комментарий начинается с решётки
"""
Тройные кавычки — это многострочная строка.
Её используют как docstring (описание модуля/функции)
или как «блочный комментарий».
"""
print("Привет, Python!") # => Привет, Python!
print("a", "b", "c") # аргументы через пробел => a b c
print("без переноса", end="") # end="" — без \n в конце
print(" — продолжение") # => без переноса — продолжение
print("x", "y", sep="-") # sep задаёт разделитель => x-y
2. Переменные и числа
# Переменные не объявляются заранее — просто присваиваем
x = 10 # int (целое)
pi = 3.14 # float (вещественное)
name = "Аня" # str (строка)
is_ok = True # bool (True / False)
nothing = None # None — «ничего», отсутствие значения
# Арифметика
print(7 + 2) # => 9
print(7 - 2) # => 5
print(7 * 2) # => 14
print(7 / 2) # => 3.5 обычное деление всегда даёт float
print(7 // 2) # => 3 целочисленное деление (отбрасывает дробь)
print(7 % 2) # => 1 остаток от деления
print(2 ** 10) # => 1024 возведение в степень
# Множественное присваивание и обмен значений
a, b = 1, 2
a, b = b, a # обмен без временной переменной => a=2, b=1
# Преобразование типов
print(int("42") + 1) # => 43 строка -> int
print(float("3.5")) # => 3.5
print(str(99) + "!") # => 99! число -> строка
count = 0
count += 5 # то же что count = count + 5 => 5
3. Строки
s = "Python"
# f-строки: подставляем выражения в {фигурные скобки}
age = 30
print(f"Мне {age} лет, через год — {age + 1}") # => Мне 30 лет, через год — 31
# Срезы [start:stop:step] — stop не включается
print(s[0]) # => P первый символ
print(s[-1]) # => n последний символ
print(s[0:3]) # => Pyt символы с 0 по 2
print(s[::2]) # => Pto каждый второй
print(s[::-1]) # => nohtyP строка задом наперёд
# Полезные методы строк
print(" hi ".strip()) # => hi убрать пробелы по краям
print("abc".upper()) # => ABC
print("ABC".lower()) # => abc
print("a,b,c".split(",")) # => ['a', 'b', 'c']
print("-".join(["1","2"])) # => 1-2 склеить список в строку
print("hello".replace("l","L")) # => heLLo
print("python".startswith("py")) # => True
print(len("Python")) # => 6 длина строки
print("3" in "2347") # => True подстрока есть?
4. Списки
# Список — упорядоченная изменяемая коллекция
nums = [3, 1, 4, 1, 5]
nums.append(9) # добавить в конец => [3, 1, 4, 1, 5, 9]
nums.insert(0, 0) # вставить по индексу => [0, 3, 1, 4, 1, 5, 9]
nums.pop() # удалить и вернуть последний => 9
nums.remove(1) # удалить первое вхождение значения 1
print(nums[0]) # => 0 доступ по индексу
print(nums[-1]) # => 5 последний
print(nums[1:3]) # срез работает как у строк
print(len(nums)) # длина списка
# Сортировка
print(sorted([3, 1, 2])) # => [1, 2, 3] возвращает новый список
print(sorted([3, 1, 2], reverse=True)) # => [3, 2, 1]
# List comprehension — компактное создание списка
squares = [n * n for n in range(5)] # => [0, 1, 4, 9, 16]
evens = [n for n in range(10) if n % 2 == 0] # => [0, 2, 4, 6, 8]
print(squares, evens)
# Распаковка
first, *rest = [1, 2, 3, 4] # first=1, rest=[2, 3, 4]
print(first, rest)
5. Кортежи и множества
# Кортеж (tuple) — как список, но НЕИЗМЕНЯЕМЫЙ
point = (10, 20)
print(point[0]) # => 10
x, y = point # распаковка кортежа => x=10, y=20
# point[0] = 5 # ОШИБКА: кортеж менять нельзя
single = (42,) # кортеж из одного элемента — запятая обязательна!
# Множество (set) — уникальные элементы, без порядка
s = {1, 2, 2, 3, 3, 3}
print(s) # => {1, 2, 3} дубликаты исчезли
s.add(4) # добавить элемент
print(3 in s) # => True проверка принадлежности — очень быстрая
# Операции над множествами
a = {1, 2, 3}
b = {2, 3, 4}
print(a | b) # => {1, 2, 3, 4} объединение
print(a & b) # => {2, 3} пересечение
print(a - b) # => {1} разность
6. Словари
# Словарь (dict) — пары «ключ: значение»
user = {"name": "Аня", "age": 30}
print(user["name"]) # => Аня доступ по ключу
user["age"] = 31 # изменить значение
user["city"] = "Москва" # добавить новую пару
# get не падает, если ключа нет — вернёт значение по умолчанию
print(user.get("email", "нет почты")) # => нет почты
print("name" in user) # => True есть ли такой ключ
# Перебор словаря
for key in user: # по ключам
print(key)
for key, val in user.items(): # по парам ключ-значение
print(f"{key} = {val}")
print(list(user.keys())) # все ключи
print(list(user.values())) # все значения
# Dict comprehension
squares = {n: n * n for n in range(4)} # => {0: 0, 1: 1, 2: 4, 3: 9}
print(squares)
7. Условия
temp = 15
# Отступы (4 пробела) определяют блоки — фигурных скобок нет
if temp > 25:
print("жарко")
elif temp > 10:
print("нормально") # => нормально
else:
print("холодно")
# Тернарный оператор: значение_если_да if условие else значение_если_нет
status = "взрослый" if temp >= 18 else "ребёнок"
# Truthiness: пустые значения «ложны», непустые — «истинны»
if []: print("не выведется") # пустой список -> False
if [1, 2]: print("список не пуст")
if "": print("не выведется") # пустая строка -> False
if 0: print("не выведется") # 0 -> False
if None: print("не выведется") # None -> False
# Логические операторы — словами
if temp > 10 and temp < 20:
print("умеренно") # => умеренно
print(not False) # => True
8. Циклы
# range(stop) / range(start, stop) / range(start, stop, step)
for i in range(3):
print(i) # => 0, 1, 2
for i in range(2, 10, 2):
print(i) # => 2, 4, 6, 8
# Перебор коллекции напрямую
for ch in "abc":
print(ch) # => a, b, c
# enumerate — индекс + значение
for i, name in enumerate(["Аня", "Боб"]):
print(i, name) # => 0 Аня / 1 Боб
# zip — параллельный перебор нескольких коллекций
for name, age in zip(["Аня", "Боб"], [30, 25]):
print(f"{name}: {age}") # => Аня: 30 / Боб: 25
# while — пока условие истинно
n = 0
while n < 3:
n += 1
print(n) # => 3
# break — выйти из цикла; continue — пропустить итерацию
for i in range(10):
if i == 3:
continue # пропустить тройку
if i == 6:
break # остановиться на шестёрке
print(i) # => 0, 1, 2, 4, 5
9. Функции
# def объявляет функцию; return возвращает значение
def square(x):
return x * x
print(square(5)) # => 25
# Аргументы по умолчанию
def greet(name, greeting="Привет"):
return f"{greeting}, {name}!"
print(greet("Аня")) # => Привет, Аня!
print(greet("Боб", "Здравствуй")) # => Здравствуй, Боб!
# Именованные аргументы (порядок не важен)
print(greet(greeting="Хей", name="Ли")) # => Хей, Ли!
# *args — любое число позиционных аргументов (кортеж)
def total(*nums):
return sum(nums)
print(total(1, 2, 3, 4)) # => 10
# **kwargs — любое число именованных аргументов (словарь)
def info(**kwargs):
return kwargs
print(info(a=1, b=2)) # => {'a': 1, 'b': 2}
# lambda — короткая анонимная функция
double = lambda x: x * 2
print(double(8)) # => 16
# Аннотации типов (подсказки, не проверяются во время выполнения)
def add(a: int, b: int) -> int:
return a + b
print(add(2, 3)) # => 5
10. Классы и ООП
# class описывает тип объекта
class Animal:
def __init__(self, name): # конструктор: вызывается при создании
self.name = name # self — сам объект; self.name — поле
def speak(self): # метод
return f"{self.name} издаёт звук"
a = Animal("Кот")
print(a.speak()) # => Кот издаёт звук
# Наследование: Dog наследует от Animal
class Dog(Animal):
def speak(self): # переопределяем метод
return f"{self.name} говорит Гав!"
d = Dog("Рекс")
print(d.speak()) # => Рекс говорит Гав!
# __str__ — что показывать при print(объект)
class Point:
def __init__(self, x, y):
self.x, self.y = x, y
def __str__(self):
return f"Point({self.x}, {self.y})"
print(Point(1, 2)) # => Point(1, 2)
# dataclass — авто-генерация __init__, __str__, сравнения
from dataclasses import dataclass
@dataclass
class User:
name: str
age: int = 0 # значение по умолчанию
u = User("Аня", 30)
print(u) # => User(name='Аня', age=30)
print(u == User("Аня", 30)) # => True сравнение по полям
11. Исключения
# try/except перехватывает ошибки, не давая программе упасть
try:
x = 10 / 0
except ZeroDivisionError:
print("на ноль делить нельзя") # => на ноль делить нельзя
# Несколько типов ошибок + доступ к объекту ошибки через as
try:
int("не число")
except ValueError as e:
print(f"ошибка: {e}") # => ошибка: invalid literal...
# else выполнится, если ошибки НЕ было; finally — всегда
try:
n = int("42")
except ValueError:
print("плохое число")
else:
print(f"всё ок: {n}") # => всё ок: 42
finally:
print("этот блок выполнится в любом случае")
# raise — поднять исключение самому
def withdraw(balance, amount):
if amount > balance:
raise ValueError("недостаточно средств")
return balance - amount
try:
withdraw(100, 200)
except ValueError as e:
print(e) # => недостаточно средств
12. Модули и импорт
# import подключает модуль целиком
import math
print(math.sqrt(16)) # => 4.0
print(math.pi) # => 3.141592653589793
# from ... import ... — берём только нужные имена
from random import randint, choice
print(randint(1, 6)) # случайное число 1..6
print(choice(["орёл", "решка"])) # случайный элемент
# import ... as ... — псевдоним (короткое имя)
import datetime as dt
print(dt.date(2026, 6, 16)) # => 2026-06-16
# Несколько модулей стандартной библиотеки
from collections import Counter
print(Counter("aabbbc")) # => Counter({'b': 3, 'a': 2, 'c': 1})
import json
print(json.dumps({"a": 1})) # => {"a": 1} объект -> JSON-строка
13. Файлы и контекст
# with автоматически закрывает файл, даже при ошибке
# режимы: "w" запись (перезапись), "a" дозапись, "r" чтение
with open("notes.txt", "w", encoding="utf-8") as f:
f.write("первая строка\n")
f.write("вторая строка\n")
# здесь файл уже закрыт
# Чтение целиком
with open("notes.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# Построчное чтение (экономно по памяти)
with open("notes.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip()) # strip убирает \n в конце строки
# Прочитать все строки в список
with open("notes.txt", "r", encoding="utf-8") as f:
lines = f.readlines() # => ['первая строка\n', 'вторая строка\n']
14. Питоничные приёмы
# Распаковка в присваивании
a, b, c = [1, 2, 3]
head, *tail = [1, 2, 3, 4] # head=1, tail=[2, 3, 4]
print(head, tail)
# Генераторное выражение — как comprehension, но «ленивое»
# (значения вычисляются по одному, не хранятся все в памяти)
gen = (n * n for n in range(1_000_000))
print(next(gen)) # => 0 берём по одному
print(sum(x for x in range(5))) # => 10 без создания списка
# Тернарник + any/all
nums = [2, 4, 6]
print(all(n % 2 == 0 for n in nums)) # => True все чётные?
print(any(n > 5 for n in nums)) # => True хоть один > 5?
# Морж := присваивает прямо внутри выражения (Python 3.8+)
data = [1, 2, 3, 4, 5]
if (count := len(data)) > 3:
print(f"длинный список: {count} элементов") # => длинный список: 5 элементов
# Удобный обмен и условные значения
x, y = 1, 2
x, y = y, x # обмен => x=2, y=1
value = None
print(value or "по умолчанию") # => по умолчанию (or возвращает первое «истинное»)
# enumerate + распаковка + f-строка вместе
for i, (name, age) in enumerate(zip(["Аня", "Боб"], [30, 25]), start=1):
print(f"{i}. {name} — {age} лет") # => 1. Аня — 30 лет / 2. Боб — 25 лет