2013-05-15 64 views
0

我有一个函数(基于文本的游戏),它要求输入多次遍历自己,在进行错误检查之前,我将立即删除所有空白。如何在另一个函数内调用多次返回变量的函数?

以减少冗余,我想制作另一个函数做两,然后返回,像这样的变量:

def startGame(): 
    print("1, 2 or 3?") 
    response = response() 

def response(): 
    a = raw_input() 
    a = a.strip() 
    return a 

startGame() 

问题是我不断收到:

UnboundLocalError: local variable 'response' referenced before assignment.

这是没有因为响应被分配了response()的返回值。
我错过了什么?有没有更简单的方法来做到这一点?

回答

7

您已命名为本地变量response也是;你无法做到这一点,它掩盖了全球性的response()功能。

重命名局部变量或函数:

def get_response(): 
    # ... 


response = get_response() 

def response(): 
    # .... 

received_response = response() 
+0

@Martijn_Pieters感谢。我不知道Python做到了,但现在我做到了! –

+0

@JosephWebber:在函数中,您直接分配给的所有名称('somename = ...')将成为局部变量(语言编译器会这样做)。这不适用于属性('somename.someattribute ='),仅适用于直接名称。因此“响应”已经被定义为本地名称,但是在分配任何值之前您已尝试使用它。然后引发一个例外。 –

相关问题