为什么我不能从函数内部更改全局变量?

2024-06-02 14:18:01 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码:

def displayInventory ():
    print ("Inventory: " + str(inventory))

def enterEcdysis():
    global xcash
    xcash -= 1
    displayInventory()

xcash = 3
inventory = [str(xcash) + ' Cash',] 
enterEcdysis()

我正在尝试打印['2 Cash,'],但运行时仍然显示为3。我不确定我到底做错了什么。xcash -= 1不应该从全局变量中去掉一个吗?你知道吗


Tags: 密码defcashglobalinventoryprintstr全局变量
2条回答

它正在更新xcash。问题是inventory过时了。在调用enterEcdysis()之前将其设置为['3 Cash'],在修改xcash之后不更新它。你知道吗

将print语句更改为直接打印xcash,您将看到它工作正常:

def displayInventory ():
    print ("Inventory: {} Cash".format(xcash))
xcash = 3
inventory = [str(xcash) + ' Cash',] 
enterEcdysis()

考虑上面的代码行。 您已经使用xcash的当前值创建并设置了变量inventory,该值在调用enterEcdysis之前为3。 在肠炎中,您将xcash的值减去1,但变量inventory保持不变。 因此,当您稍后显示变量inventory的值时,定义时仍显示inventory的值(当xcash仍等于3时)

def displayInventory ():
    print ("Inventory: " + str(inventory) + "\t" + str(xcash))

如果您如上所述修改displayInventory,您将看到xcash的值确实发生了更改,但没有更改inventory的值。你知道吗

相关问题 更多 >