如何在函数内部更改全局变量

时间:2019-07-02 11:29:59

标签: python-3.x function scope global-variables

我使用下面的代码演示了我的问题,从而简化了我的问题。

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 个答案:

答案 0 :(得分:2)

您可以在函数中更改和返回两个变量。您可以如下修改功能。

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

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

apples, euro = buy(apples, euro)

该函数将返回水果和金钱两个值。返回后,它们的值将分配给全局变量。

答案 1 :(得分:0)

由于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"])