Глобальная переменная сбрасывается до своего начального значения

#python

#python

Вопрос:

Пожалуйста, не удаляйте, я всего лишь новичок, я искал на форуме, но я все еще не могу понять, как это решить. Я создаю функцию, которая добавляет 1 к вызываемой переменной a , если выполняется определенное условие. она обновляется a до 1 всего один раз в секунду и снова устанавливается a на 0 , несмотря на то, что я объявил a как глобальную переменную. Я также пытался присвоить функции output значение a , но никаких изменений не произошло. Спасибо!

N это значение, которое продолжает увеличиваться вне скрипта. Она начинается с 0 и увеличивается на 100 ( Sub значение) каждую секунду, пока не достигнет значения 2000 и снова не начнет отсчет с 0 . Sub = 100 , Max = 1500 . Проблема в том, что при каждом N изменении код выполняется заново с самого начала, поэтому a установлено значение 0

 a=0

def index():
    global a
    if N==Max Sub:
        a=a 1
    return a

c=index()
  

Комментарии:

1. Если вы ожидаете a сохранения ее обновленного значения между запусками , то нет, этого не произойдет. a = 0 выполняется при каждом запуске вашего скрипта. Если вы хотите сохранить увеличенное значение между запусками, вам необходимо сохранить значение в файл перед выходом и чтением предыдущего файла при запуске.

2. Этот код работает для меня: >>> a = 0 >>> def index(): ... global a ... a = a 1 ... return a ... >>> index() 1 >>> index() 2 >>> index() 3 Извините за беспорядок. Я не думал, что это должно быть ответом, но я забыл, что многострочный код не отображается в комментариях.

3. N == Max Sub имеет значение true в течение секунды, поэтому c на секунду становится равным 1 и возвращается к 0, извините, я имею в виду, что я проверяю c, я отредактирую вопрос.

4. Сложная часть публикации здесь заключается в том, что вам нужен пример, который доступен для выполнения и демонстрирует проблему. Здесь, поскольку N , Max и Sub не определены, мы не можем ее запустить. Но если мы это сделаем, это не продемонстрирует проблему. a начинается с нуля, но нет ничего, что снова установит его равным нулю. Для этого вам пришлось бы запустить программу второй раз. Возможно, у вас есть другой код, устанавливающий a значение нуля позже?

5. Это помогает устранить комментарии. чепнер предполагает, что вы говорите о значении переменной при нескольких запусках. Если это так, обновите свой вопрос, чтобы четко указать, что вы хотите использовать переменную для нескольких запусков. Если нет, отправьте комментарий чепнеру, сказав, что это всего лишь один запуск. Мы предполагаем, вы уточняете.

Ответ №1:

Опубликованный код вызывает только index один раз и, следовательно, увеличивает его только один раз. Если вы запустите код снова, он сделает все заново, включая установку a значения 0.

Если вы хотите сохранить информацию во время выполнения, вам нужно сохранить ее вне функции, во что-то вроде файла или базы данных.

Комментарии:

1. Спасибо, я попробую сохранить это в файле.