Передача изменяемых объектов в функцию, а затем изменение объекта внутри функции будет иметь тот же эффект, что и непосредственное изменение объекта.
list1 = [1,2,3]
def func(list1):
list1[0] = 5
>>>list1
[5,2,3]
Это фактически то же самое, что и прямой запуск list1[0] = 5
Однако, если вы передадите неизменный объект в функцию, такую как кортеж, он не будет поддерживать назначение элемента TypeError: 'tuple' object does not support item assignment
.Поэтому вам нужно построить новый неизменный объект и вернуть его.
>>> tup1 = (1,2,3) # doing tup1[0] = 5 will cause TypeError
>>> tup2 = tup1 + (5,)
>>> tup2
(1, 2, 3, 5)
Включите его,
>>> def func2(tup1):
return tup1 + (5,)
>>> func2(tup1=(1,2,3))
(1, 2, 3, 5)