В чем разница между передачей в функцию изменяемого и неизменяемого типа данных
Python
Middle
Без компании
В чем разница между передачей в функцию изменяемого и неизменяемого типа данных
Ответы
В Python передача аргументов в функцию всегда происходит по ссылке (pass by assignment). Разница в поведении возникает из-за мутабельности объекта:
- **Неизменяемые типы** (int, float, str, tuple, frozenset): при попытке изменить объект внутри функции создается новый объект, а оригинал остается неизменным.
```
def modify_immutable(x):
x += 1
print(x) # 6
num = 5
modify_immutable(num)
print(num) # 5 (не изменился)
```
- **Изменяемые типы** (list, dict, set): изменения внутри функции отражаются на оригинальном объекте.
```
def modify_mutable(lst):
lst.append(4)
print(lst) # [1, 2, 3, 4]
my_list = [1, 2, 3]
modify_mutable(my_list)
print(my_list) # [1, 2, 3, 4] (изменился)
```
Для изменяемых объектов важно учитывать side effects, а для неизменяемых - что функция не может изменить переданное значение.