Как изменить глобальную переменную внутри функции - PullRequest
1 голос
/ 02 июля 2019

Я упростил свою проблему, используя приведенный ниже код, чтобы продемонстрировать мою проблему.

apples = 0
bananas = 0
euro = 10
dollar = 5


def buy(fruit, money):
    fruit += 1
    money -= 1


buy(apples, euro)
print(apples)
print(euro)

buy(bananas, dollar)
print(bananas)
print(dollar)

Я хочу, чтобы моя функция изменяла переменные так, чтобы вывод моего кода возвращался: 1, 9, 1, 4, но вместо этого он выводит: 0, 10, 0, 5

Я не могу использовать «глобальные яблоки» или «глобальные фрукты», так как хочу купить больше одного вида фруктов. Я также не могу использовать «возврат яблок», так как хочу изменить две разные переменные внутри моей функции.

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

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

Вы можете изменить и вернуть две переменные в функции.Вы можете изменить свою функцию, как показано ниже.

apples = 0
bananas = 0
euro = 10
dollar = 5

def buy(fruit, money):
    fruit += 1
    money -= 1
    return fruit, money

apples, euro = buy(apples, euro)

Функция вернет два значения фрукт и деньги.Их значения будут присвоены глобальным переменным после возврата.

0 голосов
/ 02 июля 2019

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

def buy(fruit, money):
    fruits[fruit] += 1
    monies[money] -= 1


fruits = {
    "apples": 0,
    "bananas": 0
}

monies = {
    "euro": 10,
    "dollar": 5
}

buy("apples", "euro")
print(fruits["apples"])
print(monies["euro"])

buy("bananas", "dollar")
print(fruits["bananas"])
print(monies["dollar"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...