Python В массив внутри if добавляется только последнее значение

Мне необходимо, чтобы по нажатию на кнопки и получению соответствующего callback - tvorog, moloko И так далее элемент добавлялся в массив. Но вместо этого, в массиве остается только последний call.data сколько бы до этого не вызывались другие.

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
        global ingredients
        ingredients = []

        if call.data == "tvorog":
            ingredients.append('tvorog')

        if call.data == "moloko":
            ingredients.append('moloko')

        if call.data == "muka":
            ingredients.append('muka')
            
        if call.data == "eggs":
            ingredients.append('eggs')


@bot.message_handler(regexp="Готово")
def gotovo(message):
    bot.send_message(message.chat.id, ingredients)

В итоге при каждом выводе ingredients (в message_handler) выдает последнюю вызванную if c одним элементом. Что я делаю не так?


Ответы (1 шт):

Автор решения: Alealan

При каждом вызове функции у вас обновляется переменная ingredients. Вынесите её вне функции.

ingredients = []
def callback_inline(call):
        
        
→ Ссылка