Синтаксис и типы данных: вопросы для собеседования (часть 5)

Базовые типы (int, float, str, bool), присваивание, f-строки, type hints — первое, что проверяют на собеседовании по Python. Спрашивают про мутабельность, разницу между is и ==, приведение типов. Без уверенного знания основ синтаксиса невозможно перейти к более сложным темам.

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrame

Вопросы 2125 из 40

21Что произойдёт при выполнении выражения `"Возраст: " + 18` в Python?
AЗначение `None` после объявления операции `+` со `str` и `int` неуспешной в Python
BСтрока `"Возраст: 18"` после автоматического приведения `int` справа к типу `str`
CЧисло `18` после игнорирования левого `str`-операнда и сохранения только числа `int`
DОшибка `TypeError`: оператор `+` для `str` требует справа `str`, а не значение `int`
Ответ: Нельзя складывать `str` и `int` без явного преобразования.

Оператор `+` для строк выполняет конкатенацию, и обе стороны должны быть строками. Выражение `"Возраст: " + 18` вызывает `TypeError`, потому что `18` — это `int`. Корректные варианты: `"Возраст: " + str(18)` или f-строка `f"Возраст: {18}"`. В отличие от JavaScript Python не делает неявного приведения типа в этой ситуации.

Подробный разбор →
22Какое значение будет у `msg` после выполнения `name = "Анна"` и `msg = f"Привет, {name}!"`?
A`"Привет, name!"`: f-строка трактует имя `name` буквально как часть текста
B`"Привет, {name}!"`: фигурные скобки в f-строке остаются частью итогового текста
C`"Привет, Анна!"`: значение переменной `name` подставляется на место выражения
D`NameError`: f-строка ищет имя в локальной области и падает при отсутствии
Ответ: f-строки подставляют значения выражений из фигурных скобок `{}` прямо в текст.

В f-строке (например, `f"Привет, {name}!"`) всё, что внутри фигурных скобок `{}`, вычисляется как выражение Python и подставляется в итоговую строку. Поэтому при `name = "Анна"` получится `"Привет, Анна!"`. Если убрать префикс `f` — получится буквальный текст `"Привет, {name}!"`. Если переменная не определена — будет `NameError`, но в данном примере она определена.

Подробный разбор →
23Пусть выполнено `a = [1, 2]` и `b = [1, 2]`. Какие значения дадут выражения `a == b` и `a is b`?
A`a == b` это `False`, `a is b` это `False`: содержимое отличается, объекты разные
B`a == b` это `False`, `a is b` это `True`: интерпретатор переиспользует один объект
C`a == b` это `True`, `a is b` это `False`: содержимое одинаковое, объекты разные
D`a == b` это `True`, `a is b` это `True`: одинаковые литералы кешируются как один
Ответ: `==` сравнивает значения, а `is` — один ли это объект в памяти.

`a = [1, 2]` и `b = [1, 2]` создают два отдельных списка с одинаковым содержимым, но это разные объекты в памяти. Поэтому `a == b` сравнивает значения и даёт `True`, а `a is b` сравнивает идентичность объектов и даёт `False`. Для маленьких целых чисел и коротких строк Python иногда переиспользует объекты, но для списков это не так: каждый литерал создаёт новый объект. Чтобы `is` дал `True`, нужно явно написать `b = a` — тогда обе переменные ссылаются на один и тот же список.

Подробный разбор →
24Что вернёт выражение `" Python ".strip()`?
A`"Python"`
B`" Python"`
C`"Python "`
D`" Python "`
Ответ: Метод `.strip()` убирает пробелы по краям строки.

`.strip()` удаляет пробелы (и другие пробельные символы) в начале и конце строки. Внутренние пробелы он не трогает. Метод возвращает новую строку: исходная строка не изменяется.

Подробный разбор →
25Какая проверка наиболее корректна и идиоматична, чтобы убедиться, что переменная `x` равна `None`?
A`x == None` через оператор равенства значений без проверки идентичности объектов
B`x = None` через оператор присваивания без сравнения текущего содержимого `x`
C`x is None` через оператор идентичности объектов как идиоматичный способ в Python
D`x == 0` через сравнение `x` с числом ноль вместо специального значения `None`
Ответ: Для проверки на `None` идиоматично использовать `is`, а не `==`.

`None` — особое значение «нет значения», и в Python принято проверять его через идентичность: `x is None`. Оператор `==` сравнивает значения и для `None` тоже сработает, но `is` яснее показывает намерение и быстрее. Присваивание `=` ничего не сравнивает, а `x == 0` проверяет совсем другое условие.

Подробный разбор →
12345678

Хотите тренировать интерактивно?

В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.

Тренировать Python в Telegram

Другие темы: Python

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыNumPy: основыPandas и DataFrame