@igreklpofrss

Почему global не global?

Пишу телеграмм бота. Вот код как оно работает:
global spisok
spisok = []
values = []

@bot.message_handler(func = lambda c: True, commands=['komanda'])
def 1_step(message):
    'тут код продолжается'
    for i in values:
        spisok.append(i)
    'тут код продолжается'
    bot.register_next_step_handler(msg, 2_step)

def 2_step(message):
     'тут код продолжается'
    bot.register_next_step_handler(msg, 3_step)

def 3_step(message):
     'тут код продолжается'
    bot.register_next_step_handler(msg, 4_step)

def 4_step(message):
     'тут код продолжается'
     print(spisok)

UnboundLocalError: local variable 'spisok' referenced before assignment

spisok задается как глобальная переменная в самом начале кода. Весь код написан так, как его использую. На первом шаге добавляются значения в этот список. Мне надо использовать этот список на 4 этапе, но консоль выдает ошибку, что переменная локальная и не задана, хотя такого не должно быть. Что не так написано?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@gimntut
Не там ставишь директиву. Должно быть так:
spisok = []

def 1_step(message):
  global spisok
  spisok.append(...)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Artin24
Начинающий
Соглашусь с теми кто выше
global spisok
нужно писать непосредственно во всех методах в которых ты изменяешь содержимое списка. И действительно, подучи пайтон.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы