2015-10-22 4 views
1

Я создал функцию, которая создает пустой список и присваивает значение из другого списка переменной. Затем код должен добавить значение переменной в список при каждом вызове функции. Но функция не добавляет, а вместо этого заменяет элемент внутри списка. Я могу сказать это, потому что, когда я печатаю список, предыдущий элемент отсутствует. Код ниже. Мне нужно это для макетирования. Есть идеи?list.append (переменная) не добавляет, но заменяет список

def track(): 
    global tracker 
    global trackerresult 
    trackerresult = [] 
    tracker = opposite1[decider] 
    trackerresult.append(tracker) 
    print(trackerresult) 
+1

Поместите 'trackerresult = []' вне функции и он должен работать. Возможно, переосмыслить, нужны ли вам глобальные переменные –

+0

Спасибо за это! –

ответ

5

Это не приложение, которое это делает, но ваша явная замена существующей переменной на две строки раньше.

Как указывает CactusWoman, вам вообще не нужны глобальные переменные. tracker - это чисто локальная переменная; и как для trackerresult, как только вы избавитесь от задания, вы будете только , мутируя, поэтому нет необходимости объявлять его глобальным.

+0

"стремится"? Вам действительно нужно лучше понять, что делает ваш код. Добавление «global» случайным образом может исправить одно, но, вероятно, вызовет другие проблемы, которые сложнее найти. В этом случае, похоже, вам нужен класс. –

+0

Делает смысл. Не думал об этом. Большое спасибо! –

0

Каждый раз, когда запускается функция track, он сбрасывает значение trackerresult в пустую корзину. Если вы явно не очистили список, вместо выполнения trackerresult=[] перед определением функции это сработает.

Смежные вопросы