воскресенье, 27 апреля 2014 г.

Передача параметра по ссылке (изменение переменной внутри функции)

Если при вызове функции подставить в качестве значения аргумента переменную, а в теле функции мы меняем значение аргумента, то то, что произойдет, зависит от того, с каким значением связана наша переменная.

Если переменная связана с неизменяемым значением, например 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]

Комментариев нет:

Отправить комментарий