Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 6, 2021 10:20:02

3frenky3
Зарегистрирован: 2021-04-06
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос связанный с работой объектов

Привет всем. Я начал изучать python и столкнулся с одной неточностью. Мне важно понимать или я что-то не так понимаю или ошибка в учебном руководстве.

Вопрос в следующем. Команды y = y * 2 и y *= 2 отличаются тем, что при исполнении первой команды у нас создается новый объект, а при исполнении второй изменяется тот, на который мы ссылаемся.

 y = 2 
print(id(y)) # 8790392243920
y *= 2
print(id(y)) 8790392243984 # Почему здесь создается новый объект?
y = y * 2
print(id(y)) 8790392244112

Возможно ответ состоит в том, что числа неизменяемые объекты?

Отредактировано 3frenky3 (Апрель 6, 2021 10:35:30)

Офлайн

#2 Апрель 6, 2021 11:38:29

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Вопрос связанный с работой объектов

3frenky3
Вопрос в следующем. Команды y = y * 2 и y *= 2 отличаются тем, что при исполнении первой команды у нас создается новый объект, а при исполнении второй изменяется тот, на который мы ссылаемся.
кто вам такую глупость сказал? int неизменяемый тип, любые операции меняющие значение приводят к созданию нового объекта. А “*= 2” всеголишь синтаксический сахар ничем кроме записи от “ = y * 2” не отличается.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 6, 2021 11:39:01)

Офлайн

#3 Апрель 6, 2021 11:42:03

3frenky3
Зарегистрирован: 2021-04-06
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос связанный с работой объектов

Спасибо огромное за разъяснения уважаемый, вы мне очень помогли

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version