2016-11-12 2 views
0

Ich habe den folgenden Code:lokale Variable vor Python verwiesen

def popLast(aLinkedList): 
    ptr = aLinkedList 
    while ptr != None: 
     if ptr['next']['next'] == None and ptr['next'] != None: 
      del_node = ptr['data'] 
      ptr['next'] = ptr['next']['next'] 
     ptr = ptr['next'] 

    return (del_node,ptr) 

Als ich

myLinkedList = createList(['a', 'b', 0, [1, 2]]) 
for i in range(getLength(myLinkedList)): 
    (a, myLinkedList) = popLast(myLinkedList) 
print(a, end = ", new list: ") 
printList(myLinkedList) 

setzen Es hält mich geben

UnboundLocalError: local variable 'del_node' referenced before assignment

Wenn ich popLast(myLinkedList) nur verwenden, gibt es kein Problem. Alles funktioniert gut. Ich weiß nicht, ob es daran liegt, dass mein zurückkehrendes Tupel das Problem ist.

+0

Der Verweis auf 'createlist' wird in Ihrem Code nicht erklärt. Bitte geben Sie uns ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). –

+1

Hinweis: PEP8 schlägt vor, dass Sie "while ptr is not None" anstelle von "while ptr! = None" verwenden. – Phrogz

Antwort

1

Wenn eine leere Liste übergeben wird, wird del_node niemals initialisiert. Dies verursacht den Fehler. Um dies zu ändern, initialisieren Sie zuerst del_node auf None:

def popLast(aLinkedList): 
    ptr = aLinkedList 
    del_node = None 
    while ptr is not None: 
    ... 
Verwandte Themen