Неверная передача значения переменной

При вытаскивании переменной из функции её значение действительно меняется, однако программа говорит, что значения старой и новой цены равны, что неверно. В чём может быть ошибка?

old_price = 0
current_price = 0

def change_price(old_price, current_price):
    global var_price
    var_price = old_price
    current_price = int(input("введите новую стоимость: "))
    return current_price, var_price

print(change_price(old_price, current_price))
if current_price > var_price:
    print("Цена возросла!")
elif current_price == var_price:
    print("Цена не изменилась")
else:
    print("Цена уменшилась!")

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

Автор решения: S. Nick

попробуйте так:

old_price = 0
current_price = 0

def change_price():
    current_price = int(input("введите новую стоимость: "))
    return current_price

#print(change_price(old_price, current_price))
current_price = change_price()

if current_price > old_price:
    print("Цена возросла!")
elif current_price == old_price:
    print("Цена не изменилась")
else:
    print("Цена уменшилась!")
→ Ссылка
Автор решения: Zhihar

сделайте так:

print(change_price(old_price, current_price))
print(current_price, var_price)

и увидите свою ошибку

надо делать так:

current_price, var_price = change_price(old_price, current_price)

у вас просто

  1. current_price - это параметр функции и как только вы его меняете он становится локальным, а не глобальным, поэтому вы и не видите его изменение снаружи функции

  2. var_price - его вне функции вообще не существует

→ Ссылка