замена return на yield
Есть такая функция, задача которой получить номер запроса на экспорт данных. После получения номеру хочу в этой же функции передать данное значение в следующий запрос и получить сами данные. Проблема в том, что оператор "return" ,как оказалось после своего выполнения завершает функцию. Хочу заменить его на оператор "yield", но к сожалению когда я его меняю все вообще перестает работать и не выполняется совсем ничего. Не понимаю в чем проблема. Подскажите, как правильно заменить в данном коде return на yield и с его помощью передать зачение в переменную.
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()
print (result)
#сохраняю данные для 2 части запроса :)
export_id = result['info']['export_id']
return export_id
#получаю сами данные
response1 = requests.get(BASE_URL_DATA, params=params_data)
result1 = response1.json()
print(response1.request.url)
#Отбираю нужные ключи из запроса
print(result1)
a = result1['info']['fields']
b = result1['info']['items']
#Делаю красиво :)
a_and_b = [dict(zip(a, x)) for x in b]
q = (json.dumps(a_and_b, indent=4, ensure_ascii=False))
print(q)
#export_id = run()
sched = BlockingScheduler()
sched.add_job(run, 'cron', month='1-12', day='1-31', hour=20, minute=29)
sched.start()
export_id = run()
Ответы (1 шт):
Остановитесь.
Вы не совсем понимаете, что такое функции, и как использовать return и yield в Питоне. Поэтому вопрос поставили неверный.
Проблема ваша не в yield, а в дизайне кода. Функция должна делать одну и только одну вещь. Вы же спрашиваете, как сделать так, чтобы функция которая видимо уже делает слишком много, делала ещё больше.
Могу посоветовать три вещи:
Переформулировать вопрос. Вы объясняете, как вы что-то хотите сделать. Объясните лучше что вы хотите сделать.
Почитайте книги по Питону, чтобы иметь определенные базы. Без этого, процесс обучения будет очень долгим. Зачем вам это?
Почитайте общие книги по программированию, стилю и дизайну кода.