Первый пример:
def func(arr):
print(arr)
arr.append(1)
arr_ = [0,0,0]
print('arr_', arr_)
func(arr_)
print('arr_', arr_)
видно, что аргумент в итоге изменяется:
arr_ [0, 0, 0]
[0, 0, 0]
arr_ [0, 0, 0, 1]
Второй пример:
def func(arr):
print(arr)
arr = 1
arr_ = 0
print('arr_', arr_)
func(arr_)
print('arr_', arr_)
видно, что аргумент в итоге не меняется:
arr_ 0
0
arr_ 0
Скажите пожалуйста, это явление возможно как-нибудь логически объяснить или нужно просто запомнить, что изменяемые типы можно таким образом изменить, а неизменяемые - нет?