nice-coding
@nice-coding
веб-программист

Как функцию обработчик заставить изменить глобальную переменную?

Есть ряд функций, которые по средством одной и той же функции обрабатывают заданные им переменные. То есть функция обработчик встроена в каждую из этих функций. Проблема в том, что функция обработчик взяв переменную в качестве параметра, изменяет ее но не передает в родительскую функцию. Таким образом, изменения не сохраняются. Если же переменную не передать параметром а задать как глобальную, тогда все сработает, но функция обработчик потеряет свою универсальность, и придется плодить ее и копипастить в каждой родительской функции, что не есть хорошо. Как все таки заставить встроенную функцию обработчик передавать изменения переменных? Пример кода ниже:
a = 1
b = 1
c = 1


def a_changer(a):
    changer(a)
    print(a)
    return a


def b_changer(b):
    changer(b)
    print(b)
    return b


def c_changer(c):
    changer(c)
    print(c)
    return c


def changer(subject):
    subject = 2
    print(subject)
    return subject

a_changer(a)
b_changer(b)
c_changer(c)
print(a)
print(b)
print(c)


то есть задача, чтобы на выходе переменные a,b,c принтелись как 2 а не как 1
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Sovetnikov
технический директор pulsprodaj.ru
Целое в Python immutable ...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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