Обновление глобальной переменной python

Как обновить глобальную переменную в Python

В Python у меня есть функция, которая возвращает список последних ссылок (на папки) на веб-сайте. У меня также есть другая функция, которая загружает последние файлы из этих папок. Я планирую запускать этот скрипт каждый день. У меня есть глобальный список со ссылками на папки, к которым функция загрузки обращается каждый раз, когда запускается для последних папок. Я хочу обновлять этот глобальный список каждые пять дней и сохранять его статичным в течение следующих 5 дней. Я запускаю код, пока он не обновится снова.

list = ["link1", "link2". ] def update(): #code to update list return list def download(list): #code to download from links 

Поэтому я хочу, чтобы функция обновления запускалась каждые 5 дней (я знаю, как это сделать), а функция загрузки — каждый день. Так как же сохранить список, возвращаемый из update(), статичным как глобальный список, пока он снова не обновится?

РЕДАКТИРОВАТЬ: Позвольте мне попытаться уточнить:

Я запускаю это в понедельник:

list = ["link1", "link2"] def update(): #code to update list return list #--> list = ["link1", "link2", "link3"] def download(list): #code to download from links 

это работало нормально, список был обновлен и использован в загрузке ().

Я запускаю это во вторник:

list = ["link1", "link2"] #update() won't run today, only runs every 5 days def update(): #code to update list return list #--> list = ["link1", "link2", "link3"] def download(list): #code to download from links 

Я перезапустил свой код, но теперь в списке нет ссылки 3 с понедельника. Как сохранить ссылку 3 в списке на следующие 5 дней, пока я снова не обновлю список?

Читайте также:  Отцентровать изображение в html

Источник

Как обновить глобальную переменную в Python

В python у меня есть функция, которая возвращает список последних ссылок (в папки) на веб-сайте. У меня также есть другая функция, которая загружает последние файлы из этих папок. Я планирую запускать этот script каждый день. У меня есть глобальный список со ссылками на папки, которые функция загрузки обращается каждый раз, когда она выполняется для последних папок. Я хочу обновить этот глобальный список каждые пять дней и сохранить его в течение следующих 5 дней. Я запускаю код, пока он не обновится. Это примерно так:

list = ["link1", "link2". ] def update(): #code to update list return list def download(list): #code to download from links 

Поэтому я хочу, чтобы функция обновления выполнялась каждые 5 дней (я знаю, как это сделать) и функцию загрузки, чтобы работать каждый день. Итак, как я могу сохранить список, возвращенный из update() static в качестве глобального списка, пока он не будет обновлен снова? EDIT: Позвольте мне пояснить: Я запускаю это в понедельник:

list = ["link1", "link2"] def update(): #code to update list return list #--> list = ["link1", "link2", "link3"] def download(list): #code to download from links 
list = ["link1", "link2"] #update() won't run today, only runs every 5 days def update(): #code to update list return list #--> list = ["link1", "link2", "link3"] def download(list): #code to download from links 

Я перезапустил свой код, но теперь в списке нет link3 с понедельника. Как сохранить ссылку link3 в списке в течение следующих 5 дней, пока я снова не обновляю список? Спасибо

Источник

Руководство по глобальным переменным

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

С другой стороны, переменная, объявленная внутри определенного блока кода, будет видна только внутри этого же блока — она называется локальной.

Разберемся с этими понятиями на примере.

Пример локальных и глобальных переменных

 
 
def sum(): a = 10 # локальные переменные b = 20 c = a + b print("Сумма:", c) sum()

Переменная объявлена внутри функции и может использоваться только в ней. Получить доступ к этой локальной функции в других нельзя.

Для решения этой проблемы используются глобальные переменные.

Теперь взгляните на этот пример с глобальными переменными:

 
 
a = 20 # определены вне функции b = 10 def sum(): c = a + b # Использование глобальных переменных print("Сумма:", c) def sub(): d = a - b # Использование глобальных переменных print("Разница:", d) sum() sub()

В этом коде были объявлены две глобальные переменные: a и b . Они используются внутри функций sum() и sub() . Обе возвращают результат при вызове.

Если определить локальную переменную с тем же именем, то приоритет будет у нее. Посмотрите, как в функции msg это реализовано.

 
 
def msg(): m = "Привет, как дела?" print(m) msg() m = "Отлично!" # глобальная переменная print(m)

Здесь была объявлена локальная переменная с таким же именем, как и у глобальной. Сперва выводится значение локальной, а после этого — глобальной.

Ключевое слово global

Python предлагает ключевое слово global , которое используется для изменения значения глобальной переменной в функции. Оно нужно для изменения значения. Вот некоторые правила по работе с глобальными переменными.

Правила использования global

  • Если значение определено на выходе функции, то оно автоматически станет глобальной переменной.
  • Ключевое слово global используется для объявления глобальной переменной внутри функции.
  • Нет необходимости использовать global для объявления глобальной переменной вне функции.
  • Переменные, на которые есть ссылка внутри функции, неявно являются глобальными.

Пример без использования глобального ключевого слова.

 
 
c = 10 def mul(): c = c * 10 print(c) mul()
line 5, in mul c = c * 10 UnboundLocalError: local variable 'c' referenced before assignment

Этот код вернул ошибку, потому что была предпринята попытка присвоить значение глобальной переменной. Изменять значение можно только с помощью ключевого слова global .

 
c = 10 def mul(): global c c = c * 10 print("Значение в функции:", c) mul() print("Значение вне функции:", c)
Значение в функции: 100 Значение вне функции: 100

Здесь переменная c была объявлена в функции mul() с помощью ключевого слова global . Ее значение умножается на 10 и становится равным 100. В процессе работы программы можно увидеть, что изменение значения внутри функции отражается на глобальном значении переменной.

Глобальные переменные в модулях Python

Преимущество использования ключевого слова global — в возможности создавать глобальные переменные и передавать их между модулями. Например, можно создать name.py, который бы состоял из глобальных переменных. Если их изменить, то изменения повлияют на все места, где эти переменные встречаются.

1. Создаем файл name.py для хранения глобальных переменных:

Источник

Использование функции globals() в Python

Python globals() function позволяет нам получить доступ к списку всех глобальных переменных и их значений в конкретном коде по всей программе.

Функция globals() представляет словарь Python, содержащий текущую глобальную таблицу символов.

Что такое таблица символов?

Таблица символов — это структура таблицы, которая представляет информацию о различных символах. Символы могут быть любыми атрибутами программного кода, такими как переменные, ключевые слова, функции и т. д.

Более того, таблица символов определяет имена этих упомянутых символов вместе с типом их объектов, их областью действия в программе и т. д.

Таблицу символов можно разделить на следующие типы:

  • глобальная таблица: представляет информацию в виде словаря о глобальных переменных.
  • локальная таблица: представляет информацию в виде словаря о локальных переменных.

Python locals() function представляет и возвращает текущую локальную таблицу символов. Узнать больше о локальных переменных и функции locals().

Разобравшись с работой функции globals(), давайте теперь разберемся со структурой того же самого, что указано в разделе ниже.

GLOBALS() функция

Синтаксис globals()

Функция globals() не принимает никаких параметров и возвращает словарь, который представляет значения текущей таблицы символов.

Теперь давайте разберемся с реализацией на примерах ниже.

Реализация на примерах

В приведенном ниже примере мы вызвали globals(), чтобы интерпретировать вывод, как показано:

Функция возвращает словарь значений из глобальной таблицы символов, который предоставляет подробную информацию о модуле, имени файла и т. д.

, '__name__': '__main__', '__spec__': None, '__file__': 'main.py', '__doc__': None, '__loader__': , '__package__': None>

Отображение глобальных и локальных переменных области действия

Затем мы определим глобальную и локальную переменные внутри функции и вызвали функцию globals(), чтобы узнать результат.

varG = 20 # global variable def var(): varL = 100 # local variable print(globals())

Функция globals() возвращает словарь, который дает информацию о глобальной переменной (varG) и ее значении вместе с функцией, именем файла и т. д.

Но, если вы заметили, функция не представила информацию о локальной переменной (varL). Эту работу будет выполнять функция locals().

, '__cached__': None, '__doc__': None, '__package__': None, '__name__': '__main__', '__spec__': None, '__builtins__': , 'var': >

Изменение и управление переменными

Мы даже можем изменить значение глобальной переменной, как показано ниже:

var = 100 globals()['var'] = 12 print('var:', var) print(globals())

Здесь мы присвоили var = 100. Кроме того, мы изменили значение переменной var на 12, используя globals(), как показано выше.

Если мы проанализируем вывод, функция вернет dict глобальной таблицы символов с обновленным значением нашей переменной, то есть var = 12

var: 12 , '__doc__': None, '__spec__': None, '__name__': '__main__', '__package__': None, '__loader__': , '__cached__': None, 'var': 12>

Источник

Оцените статью