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 лет
Поддержать проект