Если при вызове функции подставить в качестве значения аргумента переменную, а в теле функции мы меняем значение аргумента, то то, что произойдет, зависит от того, с каким значением связана наша переменная.
Если переменная связана с неизменяемым значением, например None, int, str, tulpe, ключи словарей, то естественно, это значение не изменится. А вот если переменная связана со списком, словарем или классом, то значение связанного с переменной объекта изменится.
Не изменяется:
Если переменная связана с неизменяемым значением, например None, int, str, tulpe, ключи словарей, то естественно, это значение не изменится. А вот если переменная связана со списком, словарем или классом, то значение связанного с переменной объекта изменится.
Не изменяется:
1 def a(b):
2 b = 2
3
4 c = 3
5 print c
6 a(c)
7 print c
8
9 >>> 3
10 >>> 3
Изменяется:
1 def a(b):
2 b[0] = 2
3
4 c = [3]
5 print c
6 a(c)
7 print c
8
9 >>> [3]
10 >>> [2]
Комментариев нет:
Отправить комментарий