Переменная из функции не отдает значение вне тела самой функции

Код после подсказки с глобальной переменной:

import requests
import time
import schedule
import datetime as DT


account_name = "100"
today_str = DT.datetime.now().strftime('%Y-%m-%d')

#Данные для запроса Export_ID
BASE_URL_EXPORT_ID = f"https://{account_name}.getcourse.ru/pl/api/account/users"
params_export_id = {'key' : '5D6JZ',
                    'created_at[from]' : today_str,
                    'created_at[to]': today_str}

#Данные для получение информации
BASE_URL_DATA = f"https://{account_name}.getcourse.ru/pl/api/account/exports/{export_id}"
export_id = 0
params_data = {'export_id' : export_id,
               'key' : '5D6JZ'}
    
def run():
    global export_id
    print('Получаем Export_id')
    today_str = DT.datetime.now().strftime('%Y-%m-%d')
    #получаем export_id 
    response = requests.get(BASE_URL_EXPORT_ID, params=params_export_id)
    result = response.json()
    #пытаюсь сохранить данные для 2 части запроса :)
    export_id = result['info']['export_id']

    #получаю сами данные
    response1 = requests.get(BASE_URL_DATA, params=params_data)
    result1 = response1.json()
    print (result1)

schedule.every().day.at("15:40").do(run)
while True:
    schedule.run_pending()
    time.sleep(1)
#проверяю записались ли данные в переменную    
print (export_id)

И все равно не получается использовать переменную с данные из 1 запроса для передачи во 2 запрос


Ответы (1 шт):

Автор решения: gil9red

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

Пример:

import datetime as DT
import time

import schedule
import requests


# Глобальная переменная
params_export_id = 0

BASE_URL_EXPORT_ID = ...


def run():
    global params_export_id  # Теперь глобальная переменная будет менять значение
    params_export_id = ...  # Получаем значение

    today_str = DT.datetime.now().strftime('%Y-%m-%d')
    response = requests.get(BASE_URL_EXPORT_ID, params=params_export_id)
    result = response.json()
    print(result)

    params_export_id = result['info']['export_id']


schedule.every().day.at("15:00").do(run)

while True:
    schedule.run_pending()
    time.sleep(1)
→ Ссылка