Как это чудо работает (Функция обрабатывает глобальную переменную)?
Вы работаете с одной и той же областью данных:
>>> 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
Когда ты вызываешь a(), функция меняет состояние ячейки в памяти, на которую ссылается x. Соответственно, обратно же оно не вернётся волшебным образом после окончания работы a()?