Ответ
В Python объекты делятся на изменяемые (mutable) и неизменяемые (immutable).
Неизменяемые:
- Числа (
int,float,complex) - Строки (
str) - Кортежи (
tuple) - Булевы значения (
bool) frozenset
Изменяемые:
- Списки (
list) - Словари (
dict) - Множества (
set) - Пользовательские классы
Пример:
a = (1, 2) # кортеж (неизменяемый)
b = [1, 2] # список (изменяемый)
a[0] = 3 # TypeError
b[0] = 3 # OK
Разница важна при передаче в функции (изменяемые объекты могут модифицироваться внутри функции).