Sinatra - how do I get the server's domain name

Генераторы дают Вам отложенные вычисления. Вы используете их путем итерации по ним, или явно с 'для' или неявно путем передачи его любой функции или конструкции, которая выполняет итерации. Можно думать о генераторах как возвращающий несколько объектов, как будто они возвращают список, но вместо того, чтобы возвратить их внезапно они возвращают их один за другим, и функция генератора приостанавливается, пока следующий объект не требуют.

Генераторы хороши для вычисления больших наборов результатов (в особенности вычисления, включающие сами циклы), где Вы не знаете, собираетесь ли Вы нуждаться во всех результатах, или где Вы не хотите выделять память для всех результатов одновременно. Или для ситуаций, где генератор использует другой генератор или использует некоторый другой ресурс, и более удобно, если это произошло уже в возможном.

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

, Например, скажите запись 'программы' поиска файловой системы. Вы могли выполнить поиск в целом, собрать результаты и затем отобразить их по одному. Все результаты должны были бы быть собраны перед показом первого, и все результаты будут в памяти одновременно. Или Вы могли отобразить результаты при нахождении их которые были бы большей памятью, эффективной и намного более дружественной к пользователю. Последний мог быть сделан путем передачи печатающей результат функции поисковой файловой системой функции, или это могло быть сделано, просто делая поисковую функцию генератором и выполняя итерации по результату.

, Если Вы хотите видеть пример последних двух подходов, см. os.path.walk () (старая обходящая файловую систему функция с обратным вызовом) и os.walk () (новый обходящий файловую систему генератор.), Конечно, если Вы действительно хотели собрать все результаты в списке, подход генератора тривиален для преобразования в подход большого списка:

big_list = list(the_generator)
27
задан Facundo Casco 5 May 2012 в 20:45
поделиться

1 ответ

Посмотрите:

request.env.inspect

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

Я думаю, что вы ищете

request.env["SERVER_NAME"]
10
ответ дан 28 November 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: