在Python中修改变量

时间:2016-11-24 22:11:25

标签: python pygame

我正在使用pygame创建Galaga克隆,我在使用其他函数中修改的函数中的值时遇到问题。我创建了一个非常简单的代码版本来尝试调试它,但我没有运气。

import pygame
import time
pygame.init()
clock = pygame.time.Clock()

var1 = 10

def function3(var1):

    var1 = var1 + 2


def function1():
    gameExit = False
    while not gameExit:
        function3(var1)

        print(var1)
        clock.tick(5)
function1()

我的问题是(基于此简化版本)如何显示var1的更新值。我想打印(var1)来显示10,12,14,16 ......

我的猜测是使用全局声明,但我在stackexchange上找到的最接近的问题是this,它似乎不适用于我的场景。

请注意,我知道var1的增加可以通过while循环完成,但是while循环不适用于我的实际代码。我想要一个利用这种格式的答案(或提示)(如上所示)。

任何建议将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

您应该在函数中使用return:

import pygame
import time
pygame.init()
clock = pygame.time.Clock()

var1 = 10

def function3(v):
    return v + 2


def function1():
    gameExit = False
    while not gameExit:
        var1 = function3(var1)

        print(var1)
        clock.tick(5)

function1(var1)

答案 1 :(得分:0)

这是“正确”做你想做的事的方式:

var1 = 10

def function3():
    global var1
    var1 = var1 + 2

print var1
function3()
print var1

您的代码正在修改局部变量var1,它仅在您的function3中定义。 我在引号中使用了正确的单词,因为全局变量(几乎)从来都不是一个好主意。如果需要在多个函数之间共享状态(变量),则可以创建一个类。或者你可以是现代功能和不可变的,并且函数将值作为参数,修改并返回它。