Задать вопрос
@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
  • Вопрос задан
  • 68 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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()?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы