Задать вопрос
@Hitreno

Как это чудо работает (Функция обрабатывает глобальную переменную)?

Нашёл на Гите один пример к либе, удивился. Решил писать автору об ошибке, но сначала запустил, и, о чудо, это заработало. Объясните пожалуйста как это работает кто понимает.
P.s. Значения случайны
diction={365:1}
def a():
    x=diction
    x.update({365:5})
def b():
    x=diction
    print(x[365])
a()
b() # выводит 5
print(diction[365]) # тоже выводит 5
  • Вопрос задан
  • 71 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Вы работаете с одной и той же областью данных:
>>> diction={365:1}
>>> print(id(diction))
4478940144
>>> def a():
...    x=diction
...    x.update({365:5})
...    print('in a: ', id(x))
... 
>>> def b():
...    x=diction
...    print(x[365])
...    print('in b: ', id(x))
... 
>>> a()
in a:  4478940144
>>> b()
5
in b:  4478940144
>>> print(id(diction))
4478940144
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Когда ты вызываешь a(), функция меняет состояние ячейки в памяти, на которую ссылается x. Соответственно, обратно же оно не вернётся волшебным образом после окончания работы a()?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽