我正在使用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循环不适用于我的实际代码。我想要一个利用这种格式的答案(或提示)(如上所示)。
任何建议将不胜感激。谢谢!
答案 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中定义。 我在引号中使用了正确的单词,因为全局变量(几乎)从来都不是一个好主意。如果需要在多个函数之间共享状态(变量),则可以创建一个类。或者你可以是现代功能和不可变的,并且函数将值作为参数,修改并返回它。