Ваша функция видит внешнюю переменную кэша. Поскольку он является изменяемым, он может изменять его, и его можно увидеть как внутри, так и вне функции.
Вам нужно будет использовать global, если вы хотите присвоить новое значение имени и хотите такжевнешнее имя, которое будет связано с этим значением. Например, если вы хотите присвоить 3 имени «кеш», вы используете cache = 3. Если вы не объявите его как глобальный, это будет простая локальная переменная внутри функции, а имя внешнего кэша будет по-прежнему привязано к исходному значению.