2016-02-16 32 views
-1

之前引用下面的代碼局部變量「opTuple」給錯誤「UnboundLocalError:局部變量‘opTuple’分配之前引用」(這是一個很小的代碼)UnboundLocalError:分配

def opHandler(op): 

    if op.type == 2 : 
     opTuple = ("push_contact", op.param1, op.param2) 
    elif op.type == 5 : 
     opTuple = ("add_contact", op.param1, op.param2, op.param3) 
    elif op.type == 8 : 
     opTuple = ("recommed_contact", op.param1) 

    return opTuple 

while True : 
    op1 = getOp(114514); # returns the op object 

    opArray = opHandler(op1) 

    print opArray 

我覺得變量「。 opTuple「是一個局部變量,這就是我所希望的,並且在此代碼和庫中都沒有使用過相同的名稱。

我該如何解決這個問題?謝謝你的幫助!

+2

是op.type總是2,5或8呢? –

+0

當你通過2,5或8以外的東西時會發生什麼?你應該給opTuple一個默認值。 – DJMcMayhem

+0

Yaah同意@DSM,我們不知道什麼op.type是你應該把打印報表,並請餵食跡象。 – Kjjassy

回答

0

您需要將默認值添加到opTuple如果值傳遞不匹配您的條件檢查:

def op_handler(op): 

    op_tuple = (None, None, None) # default value 

    if op.type == 2 : 
     op_tuple = ("push_contact", op.param1, op.param2) 
    elif op.type == 5 : 
     op_tuple = ("add_contact", op.param1, op.param2, op.param3) 
    elif op.type == 8 : 
     op_tuple = ("recommed_contact", op.param1) 

    return op_tuple 
+0

非常感謝! – zack

相關問題