关于python:UnboundLocalError:赋值前引用的局部变量’opTuple’

UnboundLocalError: local variable 'opTuple' referenced before assignment

下面的代码给出了错误"unboundlocalerror:分配前引用的局部变量optuple"。(这是一个最小代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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"是一个局部变量,这正是我所希望的,我以前在代码和库中都没有使用过相同的名称。

我怎么修这个?谢谢你的帮助!


如果传入的值与条件检查不匹配,则需要向opTuple添加默认值:

1
2
3
4
5
6
7
8
9
10
11
12
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