Как я могу изменить значение глобальной переменной внутри функции 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 будет путаница... хотя это лишь теория. Подумайте о варианте использования классов.

→ Ссылка