2013-05-15 91 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 ='),僅適用於直接名稱。因此「響應」已經被定義爲本地名稱,但是在分配任何值之前您已嘗試使用它。然後引發一個例外。 –

相關問題