Как не изменять по ссылке переменную в функции или создать копию переменной без ссылки

Почему у меня выводится Warning12?
Функция ft_print_positive выводит посимвольно положительное число в стандартный поток вывода
Я вроде как понял, что это из-за связи по ссылке переменных, но как их разрушить?
ft_print_nbr должна выводить число посимвольно в стандартный поток вывода

import sys;
sys.stdout.flush();

def ft_print_positive(nbr):
    if (nbr != 0):
        ft_print_nbr(nbr // 10)
        sys.stdout.write(chr(48 + nbr % 10))

def ft_print_nbr(nbr):
    nbr_copy = nbr
    if (nbr < 0):
        nbr_copy = nbr_copy * -1
        sys.stdout.write('-')
        ft_print_positive(nbr_copy)
    elif (nbr == 0):
        sys.stdout.write('Warning')
    elif (nbr > 0):
        ft_print_positive(nbr_copy)


ft_print_nbr(12)

Ответы (1 шт):

Автор решения: Михаил Камахин

Оказывается, ничего не изменяется по ссылке, я просто не ту функцию вызывал в ft_print_positive, я должен был вызывать её же, но вызывал ft_print_nbr

import sys;
sys.stdout.flush();

def ft_print_positive(nbr):
    if (nbr != 0):
        ft_print_positive(nbr // 10)
        sys.stdout.write(chr(48 + nbr % 10))

def ft_print_nbr(nbr):
    if (nbr < 0):
        nbr = nbr * -1
        sys.stdout.write('-')
        ft_print_positive(nbr)
    elif (nbr == 0):
        sys.stdout.write('0')
    elif (nbr > 0):
        ft_print_positive(nbr)


ft_print_nbr(-347)
→ Ссылка