我可以在python中的方法中更改变量吗?

时间:2019-03-06 02:25:19

标签: python

我正在尝试制作游戏,但遇到了我无法弄清的障碍。这是我无法理解的代码部分

from random import randint
apple = (0, 0)
def placeApple():
    apple = (randint(0, 19), randint(0, 19))
    fillCell(apple[0] * 20, apple[1] * 20, appleColor)
print(apple)

我觉得这应该将apple更改为一个随机整数0到19的点,但是当我在控制台中调用print(apple)时,我总是得到(0,0)

2 个答案:

答案 0 :(得分:1)

是的,您可以声明global apple(不推荐):

def placeApple():
    global apple
    apple = (randint(0, 19), randint(0, 19))
    fillCell(apple[0] * 20, apple[1] * 20, appleColor)

return

def placeApple():
    apple = (randint(0, 19), randint(0, 19))
    fillCell(apple[0] * 20, apple[1] * 20, appleColor)
    return apple

但是对于这两种方法,您实际上都必须调用该函数,例如return选项:

apple = placeApple()
print(apple)

答案 1 :(得分:1)

您面临的问题是,您有一个名为apple的全局变量,并且在函数内部有一个也称为apple的局部变量。如果要在函数内部修改全局变量,则应使用global

def placeApple():
    global apple
    apple = (randint(0, 19), randint(0, 19))
    fillCell(apple[0] * 20, apple[1] * 20, appleColor)

placeApple()

print(apple)

但是,在函数内部更改全局变量是非常不好的做法,因为在您必须调试时,这可能会使您头疼。使用这种方法,每次您调用apple时,placeApple都会更新。