如何使用def中的变量?在Python中

时间:2014-12-10 18:20:51

标签: python variables function

我有以下代码,并且协助是使用界面进行动画,其中一块墙的坐标变化(从0,0到0,1等)当你按左箭头键时帧速率减小,当按下右键时,帧速率增加。当按压g时,墙应该变成蛇。

但是,我不明白我如何使用for循环中def的变量。

from ipy_lib import SnakeUserInterface
from ipy_lib import Event

ui=SnakeUserInterface(3,3)
SNAKE=2
WALL=3

def Process_event(event):

    if event.name == "arrow" :
        frames(event.data)
    if event.name == "g":
        color = SNAKE 
    else:
        color = WALL
        return color

def frames(data):

    frames_per_second=24
    if data=="l":
        frames_per_second-=0.5
    if data=="r":
        frames_per_second+=0.5
    return frames_per_second

for j in range(0,3):

    for i in range(0,3):
        event=ui.get_event()
        Process_event(event)
        ui.set_animation_speed(frames_per_second)
        ui.place(i, j,color)
        ui.show()
        ui.clear()

3 个答案:

答案 0 :(得分:2)

首先,修复Process_event()中的缩进,以便它始终返回一个值:

def Process_event(event):

    if event.name == "arrow" :
        frames(event.data)
    if event.name == "g":
        color = SNAKE 
    else:
        color = WALL
    return color  # This line was indented too far

接下来,当您致电Process_event(event)时,请确保获取其返回值:

for i in range(0,3):
    event=ui.get_event()
    color = Process_event(event)  # Grab the value here
    ui.set_animation_speed(frames_per_second)
    ui.place(i, j,color)
    ui.show()
    ui.clear()

答案 1 :(得分:0)

在函数内创建的任何变量只能在该函数中使用。但是,正如它现在看来,你的函数是返回变量,这基本上就是函数的值。所以:

def timestwo(x):
    print x*2

print timestwo(4)

这将返回8,因为我使用参数4打印函数timestwo,因此返回值将为8,因此将timestwo(4)设置为8。

答案 2 :(得分:0)

您无法从函数中获取变量,它是该函数的本地变量。但是,您可以使用global关键字在全局INTO函数中获取变量。例如:

numberone = 12

def print(i):
    global numberone
    return print(str(i))