2016-11-12 4 views
0

я следующий код:Локальная переменная ссылается прежде, чем Python

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) 

Когда я поставил

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

Он продолжает давать мне

UnboundLocalError: local variable 'del_node' referenced before assignment

Когда я только использую popLast(myLinkedList) есть без проблем. Все работает нормально. Я не знаю, связано ли это с тем, что мой возвращающийся кортеж - проблема.

+0

Ссылка на 'createlist' в вашем коде не указывается. Пожалуйста, дайте нам [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). –

+1

Примечание: PEP8 предполагает, что вы должны использовать 'while ptr is not None' вместо' while ptr! = None'. – Phrogz

ответ

1

Если пустым списком передано, то del_node никогда не инициализируется. Это то, что вызывает ошибку. Чтобы изменить это, сначала инициализируйте del_node на None:

def popLast(aLinkedList): 
    ptr = aLinkedList 
    del_node = None 
    while ptr is not None: 
    ... 
Смежные вопросы