Форум сайта python.su
0
Добрый день.
Изучаю Python, читаю книгу, встретилось мне утверждение о том,
что все в Python является объектами и передача происходит по ссылке,
и пример приводится типа:
a =
b = a
a.append(3)
print b #получаем , т.е. изменили a, автоматически изменился b.
Всё понятно.
Но вот мой контр-пример:
a = 1
b = a
a = 2
print b #получаем 1, т.е. имеем другое поведение.
Я уверен, что это так и задумывалось, вопрос в том:
если я хочу найти описание вот этого поведения, то
Как оно называется?
Какую тему мне необходимо искать в книге?
Или просто: почему так происходит?
Заранее большое спасибо.
Офлайн
103
Офлайн
857
Maximus.Ziroa и b - это просто имена, привязанные к одному и тому же объекту. Когда ты делаешь b = a , с именами ничего не происходит, просто имя b привязывается к тому объекту, который получен через имя a, которое тоже к нему привязано. Так у тебя появляются два имени и один объект.
Или просто: почему так происходит?
a = 1 # привязал имя a к объекту 1 b = a # привязал имя b к объекту, к которому привязано имя a, - к объекту 1 a = 2 # привязал имя a к объекту 2
a = [] # привязал имя a к объекту [] b = a # привязал имя b к объекту, к которому привязано имя a, - к объекту [] a.append(3) # взял объект, к которому привязано имя a, и вызвал у него метод append()
Отредактировано py.user.next (Авг. 16, 2016 17:18:14)
Офлайн