Просто: почему функция A внутри функции B не изменяет переданную ей глобальную переменную? - PullRequest
0 голосов
/ 03 марта 2020

Код не добавляет один к переменной 'ctr'. Как это сделать?

ctr = 0
def x(ctr):    #function A
    ctr+=1
def y():    #function B
    global ctr
    x(ctr)    #function A
y()
print(ctr)
>>> 0

1 Ответ

0 голосов
/ 03 марта 2020

Целые числа передаются по значению, а не по ссылке. Вам потребуется global ctr в пределах x(), чтобы изменить глобальную переменную или вернуть результат, который присвоен значению:

ctr = 0
def x(ctr):    #function A
    ctr+=1
    return ctr

def y():    #function B
    global ctr
    ctr = x(ctr)    #function A

y()
print(ctr)
...