@violpeople

Можно ли сделать переменную глобальной в функции?

Например, я пишу бота на питон+aiogram, и мне нужно использовать переменную, которая была в коде ранее(в какой то из функций). Есть ли способы это сделать?
У меня было предположение сделать нужную мне переменную глобальной стандартным способом (global) но в этом случае переменная должна быть вне функции, что мне вроде как не подходит
  • Вопрос задан
  • 521 просмотр
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Вообще глобальные переменные – это плохо и ведёт в ряде случаев к типичным, но трудно уловимым и неочевидным багам.
Если вам нужно, чтобы разные вызовы разных функций имели доступ к одной и той же переменной, нужно этим функциям передать контекст. Контекстом может служить объект, куда всё необходимое добавлено в виде аргументов.
Нужно помнить о необходимости правильно и своевременно инициализировать контекст.
Думаю у aiogram есть штатный способ передачи контекста в обработчики, но в простых случаях достаточно сделать глобальную переменную и при запуске инициализировать в ней контекст. Так вам не придётся декларировать ее как глобальную в функциях, она будет найдена при обходе неймспецсов.
Присвоения будут внутри контекста, а глобальная переменная останется неизменной.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы