Переменные, имена и базовые типы

⏱ 25 мин · 🧩 заданий: 6

Переменная — это имя

В Python переменная не «коробка с значением», а ярлык на объекте. Присваивание = привязывает имя к объекту.

x = 10
y = x        # y — второе имя того же объекта
x = 20       # x теперь указывает на другой объект; y не изменился
print(x, y)

Аналогия

Объекты — это вещи на складе, а имена — бирки на верёвочках. y = x вешает вторую бирку на ту же вещь. x = 20 перевешивает бирку x на другую вещь, а бирка y остаётся на прежней.

Нажмите 👣 Пошагово на примере ниже. Для списка (изменяемого объекта) визуализатор покажет, что оба имени ссылаются на один объект #1:

a = [1, 2, 3]
b = a           # не копия! второе имя того же списка
b.append(4)
print(a)        # [1, 2, 3, 4] — изменился «и a тоже»

Это одна из главных тем собеседований. Мы подробно разберём её в модуле «Модель данных и память».

Присваивание

# множественное присваивание
name, age = "Анна", 28

# одно значение нескольким именам
x = y = 0

# обмен значений без временной переменной
a, b = 1, 2
a, b = b, a
print(name, age, x, y, a, b)

# расширенное присваивание
counter = 10
counter += 5      # counter = counter + 5
counter *= 2
print(counter)

a, b = b, a работает так: справа создаётся кортеж (b, a), затем он распаковывается в имена слева.

Правила именования

  • Буквы, цифры и _, но не с цифры: user1, _tmp, MAX_SIZE.
  • Регистр важен: name и Name — разные имена.
  • Нельзя использовать ключевые слова: if, for, class, def, return, None, True, lambda…
Стиль (PEP 8) Для чего Пример
snake_case переменные, функции, модули total_price, get_user()
PascalCase классы UserProfile
UPPER_CASE константы MAX_RETRIES = 3
_name «внутреннее», не для внешнего использования _cache

Не затирайте встроенные имена

list = [1, 2], str = "x", id = 5 — синтаксически можно, но после этого встроенные list(), str(), id() в этом модуле перестанут работать. Классическая ошибка новичков.

list = [1, 2, 3]       # затёрли встроенный list
print(list("abc"))     # TypeError: 'list' object is not callable

Базовые типы

Тип Пример Что это
int 42, -7, 1_000_000 целые числа произвольной длины
float 3.14, 1e-3 числа с плавающей точкой (IEEE 754, 64 бита)
bool True, False логический тип, подкласс int
str "привет", 'a' строка Unicode, неизменяемая
NoneType None «ничего», отсутствие значения
print(type(42), type(3.14), type(True), type("hi"), type(None))
print(2 ** 100)                 # int не переполняется
print(isinstance(5, int), isinstance(5, (int, float)))

type(x) возвращает точный тип, а isinstance(x, T) проверяет «x — экземпляр T или его подкласса». В коде почти всегда используют isinstance.

Преобразование типов

print(int("42") + 1)        # 43
print(float("3.5") * 2)     # 7.0
print(str(10) + "0")        # '100'
print(int(3.99))            # 3 — отбрасывает дробную часть, не округляет
print(bool(0), bool(""), bool("0"), bool([]))   # False False True False
print(int("3.5"))           # ValueError: строку с точкой int() не понимает

Запомните

int("3.5") — ошибка, а int(float("3.5")) — 3. bool("0") — True: непустая строка всегда истинна.

None

None — единственный объект своего типа. Им обозначают «значения нет»: функция ничего не вернула, поле не заполнено.

result = None
if result is None:          # сравнивают с None через is, а не ==
    print("Пока пусто")

Итог

  • Переменная — имя, привязанное к объекту; = не копирует.
  • Множественное присваивание и обмен a, b = b, a.
  • Именование: snake_case, классы PascalCase, константы UPPER_CASE; не затирайте встроенные имена.
  • Базовые типы: int (без переполнения), float, bool (подкласс int), str, None.
  • isinstance предпочтительнее type(...) ==; с None сравнивают через is.

Практика решено 0 из 6

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Один вариант ответа

Что происходит при выполнении x = 42?

Задание 2 Программа на Python

Поменяйте значения переменных a и b местами без третьей переменной (используйте множественное присваивание).

Какие тесты проверяют код (2)
assert a == "правый"
assert b == "левый"
Задание 3 Заполнить таблицу

Допустимо ли имя переменной в Python?

ДопустимоОшибка
user_name
2nd_place
_private
class
имя
total-sum
Отметьте ячейку — «+», пустая — «−».
Задание 4 Заполнить таблицу

Какой тип у значения?

intfloatstrboolNoneType
7
7.0
"7"
True
None
1e3
Отметьте ячейку — «+», пустая — «−».
Задание 5 Программа на Python

В переменной raw лежит строка с числом. Создайте переменную n — это число как int, и переменную half — половину n как float.

Какие тесты проверяют код (4)
assert n == 37
assert type(n) is int, "n должна быть int, а не строкой"
assert half == 18.5
assert type(half) is float
Задание 6 Один вариант ответа

Что вернёт isinstance(True, int)?

Войдите, чтобы отмечать пройденные уроки.