Как я могу изменить значение глобальной переменной внутри функции def в python
Я работаю с библиотекой telebot и столкнулся с проблемой. Мне необходимо сделать проверку по ID чата и я хочу чтобы настроить ID можно было командой, у меня получился такой код:
import telebot
import pickle
@bot.message_handler(commands=['setid'])
def chat_id(message):
outfile = open(id_filename, 'wb')
Chat_ID = message.chat.id
print('Chat ID: ', Chat_ID)
pickle.dump(Chat_ID, outfile)
outfile.close()
Глобальная переменная Chat_ID не обновляется в результате операции и я не могу понять в чём проблема. Как я могу обновить её на глобальном уровне?
Ответы (1 шт):
Автор решения: Kers
→ Ссылка
Пример работы с глобальной переменной:
g = "Hello"
def fun():
global g # Указываем что g является глобальной а не локальной
g = "world"
fun()
print(g) # world
Если не указать global
g = "Hello"
def fun():
g = "world" # g Локальная существует только в пределах fun()
fun()
print(g) # Hello
Ну и использование глобальных переменных не лучшая практика. Если не ошибаюсь глобальная Chat_ID будет работать пока есть 1 пользователь а на 2 будет путаница... хотя это лишь теория. Подумайте о варианте использования классов.