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

问题描述 投票:3回答:2

这里是我的代码:

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拿一个从全局变量了吗?

python python-3.x
2个回答
3
投票

这是更新xcash。问题是inventory是过时的。你将它设置为['3 Cash']调用enterEcdysis()之前和xcash被修改后,你不更新它。

改变你的print语句直接打印xcash,你会看到它的正常工作:

def displayInventory ():
    print ("Inventory: {} Cash".format(xcash))

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

考虑上面的代码行。你已经创建并使用xcash调用enterEcdysis之前是3-1的电流值设置变量库存。在enterEcdysis,你已经减去1从xcash的价值,但变量库存保持不变。因此,当你,以后,显示变量库存的值,您仍示出资源的价值,当它被定义(当仍然xcash等于3。)

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

如果修改displayInventory如上,你会看到xcash的价值确实改变,但你不能改变存量的价值。

© www.soinside.com 2019 - 2024. All rights reserved.