Какие типы данных существуют в Python
Что проверяют
Ориентируетесь ли вы в базовых типах и понимаете ли деление на изменяемые и неизменяемые. Второе важнее списка.
Как отвечать
Сгруппируйте, а не перечисляйте подряд.
Числа: int (произвольной длины), float, complex, плюс Decimal и Fraction из стандартной библиотеки для точных вычислений.
Строки и байты: str (последовательность символов), bytes, bytearray.
Последовательности: list (изменяемый), tuple (неизменяемый), range.
Множества: set (изменяемое), frozenset.
Отображения: dict.
Прочее: bool (подкласс int), None.
Ключевое деление, ради которого вопрос и задают:
- неизменяемые: числа, строки, кортежи,
frozenset,bytes; - изменяемые: списки, словари, множества,
bytearray.
Из него следует всё практическое: ключом словаря может быть только неизменяемое, аргумент по умолчанию нельзя делать списком (он создаётся один раз и живёт между вызовами), а присваивание копирует ссылку, а не значение.
def add(item, target=[]): # ловушка: список общий для всех вызовов
target.append(item)
return targetГде спотыкаются
Называют bool отдельным типом, не зная, что это подкласс int и True + True == 2.
Забывают, что кортеж неизменяем только по составу: список внутри кортежа менять можно.
Не могут объяснить, почему a = b для списков это не копия, и путают поверхностное копирование с глубоким.